在我问app.router之前,我想我至少应该解释一下我认为在使用中间件时会发生什么。要使用中间件,需要使用的函数是app.use()。当中间件正在执行时,它将使用next()调用下一个中间件,或者使它不再调用更多的中间件。这意味着我放置中间件调用的顺序很重要,因为一些中间件依赖于其他中间件,而靠近末尾的一些中间件甚至可能不被调用。
Today I was working on my application and had my server running in the background. I wanted to make some changes and refresh my page and see the changes immediately. Specifically, I was making changes to my layout. I couldn't get it to work so I searched Stack Overflow for the answer and found this question. It says to make sure that express.static() is beneath require('stylus'). But when I was looking at that OP's code, I saw that he had his app.router call at the very end of his middleware calls, and I tried to figure out why that was.
当我做我的express. js应用程序(3.0.0rc4版),我使用命令express app -sessions -css stylus和在我的app.js文件的代码来设置与我的app.router以上的express.static()和要求('stylus')调用。所以看起来,如果它已经这样设置了,那么它应该保持这样。
在重新安排我的代码,这样我就可以看到我的手写笔的变化,它看起来像这样:
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');
});
So I decided that the first step would be to find out why it is important to even have app.router in my code. So I commented it out, started my app and navigated to /. It displayed my index page just fine. Hmm, maybe it worked because I was exporting the routing from my routes file (routes.index). So next I navigated to /test and it displayed Test on the screen. Haha, OK, I have no idea what app.router does. Whether it is included in my code or not, my routing is fine. So I am definitely missing something.
所以我的问题是:
谁能解释一下app.router是做什么的,它的重要性,以及我应该把它放在中间件调用的哪里?如果我能得到一个关于express.static()的简要解释,那就太好了。据我所知,express.static()是我的信息的缓存,如果应用程序找不到所请求的页面,它将检查缓存,看看它是否存在。