gpt4 book ai didi

node.js - app.use 中触发函数的顺序

转载 作者:太空宇宙 更新时间:2023-11-04 00:29:53 24 4
gpt4 key购买 nike

我读到中间件函数是按照它们添加的顺序执行的,所以如果我有以下内容:

app.use('/', function () {
console.log('/');
next();
});

app.use('/users', function () {
console.log('/users');
next();
});

app.use(function () {
console.log('none');
next();
});

它们按什么顺序执行以及为什么路径是:

  1. /
  2. /用户
  3. /一些

最佳答案

对于所有端点:

  1. /
  2. /用户
  3. /一些

原始代码只会调用第一个函数:

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();
});

然后:

  1. 对于 / - / 的函数,然后 none
  2. 对于 /users - 用于 /usersnone 的函数
  3. 对于 /some - /none 的函数以及 404 处理程序

那是因为:

  1. / 函数匹配所有路由
  2. /users 函数匹配 /users 但不匹配 //some
  3. 默认情况下,无路径表示 /,因此它会匹配所有内容

有关 app.use 路径匹配的详细信息,请参阅:

关于node.js - app.use 中触发函数的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41383564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com