2016-05-25 4 views
0

Ich habe dieses Format in ein paar Tutorials gesehen, aber ich bin neu in node.js und in den Kursen, die ich gemacht habe, haben sie mir beigebracht schreiben Routen wie:node.js express - Routen bearbeiten wie app.get ('route', folder.file)

app.get('/example', function(request, response){}); 

stattdessen habe ich es viele gesehen mit mag: inside "example.js"

Can

app.get('/example', routes.example); 

mit einer Datei dann einen Ordner "Routen" mit jemand gibt mir vielleicht eine kleine Erklärung für diesen Weg Handling-Routen, warum ist es besser und was ist der Unterschied, es in Bezug auf die Umsetzung zu nutzen?

Vielen Dank!

Antwort

2

Der Hauptunterschied besteht darin, wo die Logik für die Route definiert ist. Letzteres wird normalerweise empfohlen, da es die Verantwortung für die Routen entkoppelt und den Code ein wenig sauberer zu lesen macht.

app.get('/example', function(req, res) {});

In der obigen Routendefinition wird die Logik für diese Route innerhalb der Funktion definiert, die eine Anfrage aufgerufen werden, wenn gegen /example hergestellt ist. Wenn Sie so viele Routen in einer Datei definiert haben, wird es schwierig, sie zu verfolgen und zu lesen.

app.get('/example', routes.example);

Diese Routendefinition ist mehr oder weniger identisch mit dem vorherigen in wie es funktioniert. Der Hauptvorteil ist, dass es viel besser lesbar ist, wenn Sie viele Routendefinitionen in einer einzigen Datei haben.

Wie für das ./routes Verzeichnis mit mehreren Routendateien darin, ist dies wegen Router Middleware. Der Hauptvorteil besteht darin, dass Routen in separaten Dateien definiert und dann als Middleware in die Hauptanwendung eingefügt werden können.

Ich würde empfehlen, express-generator zu verwenden, um eine neue Express-App zu erstellen und die Struktur der App und ihrer Verzeichnisse durchzugehen. Dies ist mehr oder weniger die empfohlene Struktur für die Erstellung einer Express-App. Es wird auch zeigen, wie Router Middleware richtig verwendet wird und Sie werden ein Gefühl dafür bekommen, wie Routen in Ihre Haupt-Express-App eingefügt werden.

+0

Hervorragende Erklärung!Ich wusste nicht über die Router-Middleware. Ich werde die Links lesen, die du mir geschickt hast. Vielen Dank ! –

1

Der einzige Unterschied zwischen den beiden ist die Durchsetzung einer Trennung von Bedenken.

Einige Entwickler mögen den Code, der sich auf eine bestimmte Route bezieht, in einer separaten Controller-Datei behalten und in der Router-Datei darauf verweisen.

Damit können Sie schnell und einfach die Ursache eines Fehlers lokalisieren und anderen Entwicklern einen umfassenden Überblick über Ihr Projekt geben.

Beispiel: Wenn ich eine Route habe /foo Ich könnte eine fooController erstellen, die alle Aktionen behandelt, die diese Route benötigen würde.

1

In der zweiten Weise lädt die Router-Middleware alle im Routenpfad definierten Controller per Konvention. Der Code wäre sauberer und weniger verbal, wenn man die Konvention über die Konfiguration verwendet, aber in Bezug auf Funktionalität, Leistung oder andere Aspekte denke ich, dass es keinen Unterschied gibt.