Avant de poser des questions, app.router
je pense que je devrais expliquer au moins ce qui se passe lorsque je travaille avec un middleware. Pour utiliser le middleware, la fonction à utiliser est app.use()
. Lorsque le middleware est en cours d'exécution, il appellera le prochain middleware à l'aide de next()
ou fera en sorte qu'aucun middleware ne soit appelé. Cela signifie que l'ordre dans lequel je passe mes appels de middleware est important, car certains middleware dépendent d'autres middleware, et certains middleware proches de la fin peuvent même ne pas être appelés.
Aujourd'hui, je travaillais sur mon application et mon serveur fonctionnait en arrière-plan. Je voulais faire quelques changements et rafraîchir ma page et voir les changements immédiatement. Plus précisément, je modifiais ma disposition. Je n'ai pas réussi à le faire fonctionner, j'ai donc cherché dans Stack Overflow la réponse et trouvé cette question . Il dit de s'assurer que express.static()
c'est en dessous require('stylus')
. Mais quand j'ai regardé le code de ce PO, j'ai vu qu'il avait son app.router
appel à la toute fin de ses appels de middleware, et j'ai essayé de comprendre pourquoi.
Quand je fait ma demande express.js (version 3.0.0rc4), je la commande express app --sessions --css stylus
et dans mon fichier app.js le code venu configuration avec mon app.router
ci - dessus à la fois le express.static()
et les require('stylus')
appels. Il semble donc que, s'il est déjà configuré de cette façon, il devrait le rester.
Après avoir réorganisé mon code afin que je puisse voir mes modifications de stylet, il ressemble à ceci:
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');
});
J'ai donc décidé que la première étape serait de découvrir pourquoi il est important d'avoir même app.router
dans mon code. J'ai donc commenté, lancé mon application et accédé à /
. Il a très bien affiché ma page d'index. Hmm, cela a peut-être fonctionné parce que j'exportais le routage à partir de mon fichier de routes (routes.index). J'ai ensuite navigué vers /test
et il a affiché Test sur l'écran. Haha, OK, je ne sais pas ce que app.router
ça fait. Qu'il soit inclus dans mon code ou non, mon routage est correct. Il me manque donc quelque chose.
Voici donc ma question:
Quelqu'un pourrait-il expliquer ce qu'il app.router
fait, son importance et où je devrais le placer dans mes appels middleware? Ce serait également bien si j'obtenais une brève explication express.static()
. Autant que je sache, il express.static()
s'agit d'un cache de mes informations, et si l'application ne trouve pas la page demandée, elle vérifiera le cache pour voir si elle existe.