Node.js / Express.js - Wie funktioniert app.router?

Bevor ich nach frageapp.router Ich denke, ich sollte zumindest erklären, was ich denke, wenn ich mit Middleware arbeite. Für die Verwendung von Middleware ist die zu verwendende Funktionapp.use(). Wenn die Middleware ausgeführt wird, ruft sie entweder die nächste Middleware mit aufnext() oder mach es so das keine Middleware mehr gerufen wird. Das bedeutet, dass die Reihenfolge, in der ich meine Middleware-Aufrufe tätige, wichtig ist, da einige Middleware von anderen Middleware abhängt und manche Middleware gegen Ende möglicherweise nicht einmal aufgerufen wird.

Heute habe ich an meiner Anwendung gearbeitet und meinen Server im Hintergrund laufen lassen. Ich wollte einige Änderungen vornehmen, meine Seite aktualisieren und die Änderungen sofort sehen. Insbesondere habe ich Änderungen an meinem Layout vorgenommen. Ich konnte es nicht zum Laufen bringen, also suchte ich im Stapelüberlauf nach der Antwort und fand siediese Frage. Es heißt, um das sicherzustellenexpress.static() ist unterrequire('stylus'). Aber als ich mir den OP-Code ansah, sah ich, dass er seinen hatteapp.router call ganz am Ende seiner Middleware-Aufrufe, und ich versuchte herauszufinden, warum das so war.

Bei der Erstellung meiner Anwendung Express.js (Version 3.0.0rc4) habe ich den Befehl verwendetexpress app --sessions --css stylus und in meiner app.js Datei kam der Code mit meinem Setupapp.router über den beidenexpress.static() undrequire('stylus') Anrufe. Es sieht also so aus, als würde es so bleiben, wenn es bereits so eingerichtet ist.

Nachdem ich meinen Code neu angeordnet habe, damit ich meine Stylus-Änderungen sehen kann, sieht es so aus:

app.configure(function(){
  //app.set() calls
  //app.use() calls
  //...
  app.use(app.router);
  app.use(require('stylus').middleware(__dirname + '/public'));
  app.use(express.static(__dirname + '/public', {maxAge: 31557600000}));
});

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

app.get('/test', function(req, res){
  res.send('Test');
});

Deshalb entschied ich, dass der erste Schritt darin besteht, herauszufinden, warum es wichtig ist, überhaupt etwas zu habenapp.router in meinem Code. Also habe ich es auskommentiert, meine App gestartet und zu navigiert/. Es zeigte meine Indexseite ganz gut. Hmm, vielleicht hat es funktioniert, weil ich das Routing aus meiner Routendatei (routes.index) exportiert habe. Als nächstes navigierte ich zu/test und es zeigte Test auf dem Bildschirm. Haha, OK, ich habe keine Ahnung wasapp.router tut. Ob es in meinem Code enthalten ist oder nicht, mein Routing ist in Ordnung. Mir fehlt also definitiv etwas.

Also hier ist meine Frage:

Könnte jemand bitte erklären, wasapp.router Wie wichtig ist es und wo soll ich es in meinen Middleware-Aufrufen platzieren? Es wäre auch schön, wenn ich eine kurze Erklärung dazu bekommen würdeexpress.static(). Soweit ich sagen kann,express.static() ist ein Cache meiner Informationen, und wenn die Anwendung die angeforderte Seite nicht finden kann, überprüft sie den Cache, um festzustellen, ob er vorhanden ist.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage