手册上写着是:
app.use([path], function)
Use the given middleware function, with optional mount path, defaulting to "/".
但是不是很理解意思。这里的function 是在什么场合调用的?
手册上写着是:
app.use([path], function)
Use the given middleware function, with optional mount path, defaulting to "/".
但是不是很理解意思。这里的function 是在什么场合调用的?
Since path defaults to “/”, middleware mounted without a path will be executed for every request to the app.
// this middleware will be executed for every request to the app
app.use(function (req, res, next) {
console.log('Time: %d', Date.now());
next();
})
所以有时候还是得多看官方的文档。
app.use 加载用于处理http請求的middleware(中间件),当一个请求来的时候,会依次被这些 middlewares处理。
执行的顺序是你定义的顺序,比如文档上的例子:
var logger = require('morgan');
app.use(logger());
app.use(express.static(__dirname + '/public'));
app.use(function(req, res){
res.send('Hello');
});
这个就不会记录静态文件的日志,因为looger中间件在static中间件后面。
app.use(express.static(__dirname + '/public'));
app.use(logger());
app.use(function(req, res){
res.send('Hello');
});
3 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
2 回答1.5k 阅读
1 回答1.2k 阅读✓ 已解决
2 回答920 阅读✓ 已解决
4 回答592 阅读✓ 已解决
就是引入一个所谓的中间件,其实就是用来再实际请求发生之前hack req和res对象来实现一些功能,比如果最简单的logger就是在res的end事件上添加监听写入一条日志记录,express使用connect提供的中间件,列表见 这里
你也可以轻易实现自己的中间件,举个例子比如你总是需要连接mysql
在以后的中间件里你就可以使用 req.db对象来查询数据库了。