在我问起之前我app.router
想我应该至少解释一下我在使用中间件时的想法.要使用中间件,要使用的功能是app.use()
.当中间件被执行时,它将通过使用next()
或调用下一个中间件来调用,因此不再调用中间件.这意味着我放置中间件调用的顺序很重要,因为某些中间件依赖于其他中间件,而某些中间件甚至可能甚至都没有被调用.
今天我正在处理我的应用程序并让我的服务器在后台运行.我想进行一些更改并刷新页面并立即查看更改.具体来说,我正在改变我的布局.我无法让它工作,所以我搜索了Stack Overflow的答案并找到了这个问题.它说要确保它express.static()
在下面require('stylus')
.但当我查看OP的代码时,我看到他app.router
在他的中间件调用结束时接到了他的电话,我试图找出原因.
当我创建我的Express.js应用程序(版本3.0.0rc4)时,我使用了该命令,express app --sessions --css stylus
并在我的app.js文件中设置了app.router
上面的代码express.static()
和require('stylus')
调用代码.所以看起来,如果它已经设置了那样,那么它应该保持这种方式.
重新安排我的代码后,我可以看到我的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');
});
Run Code Online (Sandbox Code Playgroud)
所以我决定第一步是找出为什么app.router
在我的代码中有重要性.所以我评论了它,开始我的应用程序并导航到/
.它显示我的索引页面就好了.嗯,也许它有效,因为我从路线文件(routes.index)导出路由.接下来我导航到/test
屏幕上显示Test.哈哈,好的,我不知道是什么app.router
.无论它是否包含在我的代码中,我的路由都很好.所以我肯定错过了一些东西.
所以这是我的问题:
有人可以解释一下app.router
它的重要性,它的重要性,以及我应该把它放在我的中间件调用中的哪个位置?如果我得到一个简短的解释,那也很好express.static()
.据我所知,express.static()
是我的信息缓存,如果应用程序找不到请求的页面,它将检查缓存以查看它是否存在.