Prima di chiedere, app.routerpenso 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.routerchiamata 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 styluse il mio file app.js il codice venuto messa a punto con il mio app.routeral 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.routernel 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 /teste ho visualizzato Test sullo schermo. Haha, OK, non ho idea di cosa app.routerfaccia. 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.routerfa, 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.