我已经读过中间件函数按添加顺序执行,所以如果我有以下内容:
app.use('/', function () {
console.log('/');
next();
});
app.use('/users', function () {
console.log('/users');
next();
});
app.use(function () {
console.log('none');
next();
});
他们执行的顺序是什么,为什么路径是:
答案 0 :(得分:1)
对于所有端点:
/
/users
/some
只会为原始代码调用第一个函数:
app.use('/', function (req, res, next) {
console.log('/');
});
app.use('/users', function (req, res, next) {
console.log('/users');
});
app.use(function (req, res, next) {
console.log('none');
});
那是因为你没有使用next()
。但如果你有:
app.use('/', function (req, res, next) {
console.log('/');
next();
});
app.use('/users', function (req, res, next) {
console.log('/users');
next();
});
app.use(function (req, res, next) {
console.log('none');
next();
});
然后:
/
- /
的功能,然后是none
/users
- /
,users
和none
/some
- /
和none
的功能以及404处理程序那是因为:
/
函数匹配所有路由/users
功能匹配/users
但不匹配/
或/some
/
,因此它匹配所有内容有关app.use
的路径匹配的详细信息,请参阅: