Bevor ich danach frage app.router
, sollte ich zumindest erklären, was meiner Meinung nach bei der Arbeit mit Middleware passiert. Um Middleware zu verwenden, ist die zu verwendende Funktion app.use()
. Wenn die Middleware ausgeführt wird, wird entweder die nächste Middleware mithilfe von next()
aufgerufen oder so eingestellt, dass keine Middleware mehr aufgerufen wird. Das bedeutet, dass die Reihenfolge, in der ich meine Middleware-Aufrufe platziere, wichtig ist, da einige Middleware von anderer Middleware abhängt und einige 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 und 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 diese Frage . Es heißt, um sicherzustellen, dass express.static()
das darunter ist require('stylus')
. Aber als ich mir den Code dieses OP ansah, sah ich, dass er seinen app.router
Anruf ganz am Ende seiner Middleware-Anrufe hatte, und ich versuchte herauszufinden, warum das so war.
Als ich meine Express.js-Anwendung (Version 3.0.0rc4) erstellt habe, habe ich den Befehl verwendet express app --sessions --css stylus
und in meiner app.js-Datei wurde der Code mit meinem app.router
obigen Aufruf express.static()
und eingerichtet require('stylus')
. Wenn es also bereits so eingerichtet ist, sollte es so bleiben.
Nachdem ich meinen Code neu angeordnet habe, damit ich meine Stylus-Änderungen sehen kann, sieht es folgendermaßen 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 habe ich beschlossen, dass der erste Schritt darin besteht, herauszufinden, warum es wichtig ist, überhaupt einen app.router
Code zu haben. 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 (route.index) exportiert habe. Als nächstes navigierte ich zu /test
und es zeigte Test auf dem Bildschirm an. Haha, OK, ich habe keine Ahnung was app.router
macht. Unabhängig davon, ob es in meinem Code enthalten ist oder nicht, ist mein Routing in Ordnung. Mir fehlt also definitiv etwas.
Hier ist meine Frage:
Könnte jemand bitte erklären, was es app.router
tut, wie wichtig es ist und wo ich es in meine Middleware-Aufrufe einfügen soll? Es wäre auch schön, wenn ich eine kurze Erklärung dazu bekommen würde express.static()
. Soweit ich das beurteilen kann, express.static()
handelt es sich um einen Cache meiner Informationen. Wenn die Anwendung die angeforderte Seite nicht finden kann, überprüft sie den Cache, um festzustellen, ob sie vorhanden ist.