Prima di chiedere, app.router
penso che dovrei spiegare almeno cosa penso che accada quando si lavora con il middleware. Per utilizzare il middleware, la funzione da utilizzare è app.use()
. Quando il middleware viene eseguito, chiamerà il middleware successivo usando next()
o lo farà in modo che non venga più chiamato middleware. Ciò significa che l'ordine in cui inserisco le chiamate del mio middleware è importante, poiché alcuni middleware dipendono da altri middleware e alcuni middleware vicino alla fine potrebbero non essere nemmeno chiamati.
Oggi stavo lavorando sulla mia applicazione e il mio server era in esecuzione in background. Volevo apportare alcune modifiche e aggiornare la mia pagina e vedere immediatamente le modifiche. In particolare, stavo apportando modifiche al mio layout. Non sono riuscito a farlo funzionare, quindi ho cercato Stack Overflow per la risposta e ho trovato questa domanda . Dice per assicurarsi che express.static()
sia sotto require('stylus')
. Ma quando stavo guardando il codice di quell'OP, ho visto che aveva la sua app.router
chiamata proprio alla fine delle sue chiamate sul middleware, e ho cercato di capire perché fosse così.
Quando ho fatto la mia domanda Express.js (versione 3.0.0rc4), ho usato il comando express app --sessions --css stylus
e il mio file app.js il codice venuto messa a punto con il mio app.router
al di sopra sia del express.static()
e require('stylus')
chiamate. Quindi sembra che, se arriva già impostato in quel modo, allora dovrebbe rimanere tale.
Dopo aver riorganizzato il mio codice in modo da poter vedere le modifiche dello stilo, è simile al seguente:
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');
});
Quindi ho deciso che il primo passo sarebbe stato scoprire perché è importante avere anche app.router
nel mio codice. Quindi l'ho commentato, ho avviato la mia app e sono passato a /
. Ha mostrato la mia pagina indice proprio bene. Hmm, forse ha funzionato perché stavo esportando il routing dal mio file di route (route.index). Quindi ho navigato /test
e ho visualizzato Test sullo schermo. Haha, OK, non ho idea di cosa app.router
faccia. Che sia incluso nel mio codice o meno, il mio routing va bene. Quindi mi manca decisamente qualcosa.
Quindi questa è la mia domanda:
Qualcuno potrebbe spiegare cosa app.router
fa, l'importanza di esso e dove dovrei inserirlo nelle mie chiamate di middleware? Sarebbe anche bello se avessi una breve spiegazione in merito express.static()
. Per quanto posso dire, express.static()
è una cache delle mie informazioni e se l'applicazione non riesce a trovare la pagina richiesta, controllerà la cache per vedere se esiste.