ホームページ  >  に質問  >  本文

node.js - express中间件,他是如何知道哪个中间件先处理,哪个中间件后处理的?

如题,express中间件,他是如何知道哪个中间件先处理,哪个中间件后处理的?这不用我们管吗?如果我们 有2个自定义中间件有顺序要求,那应该怎么定义呢?

PHPzPHPz2764日前659

全員に返信(2)返信します

  • 高洛峰

    高洛峰2017-04-17 14:49:22

    假设你请求的路径是 `/user',并且此时有如下两个路由同时匹配中你的请求。那么

    1. 理论上,这两个路由匹配中的中间件都会执行

    2. 后面中间件是否执行,取决于前一个中间件,是否有调用next()

    app.get('/user', function(req, res, next){
        console.log('1');
        next();
    });
    
    app.get('/user', function(req, res, next){
        console.log('2');
        res.send('user');
    });

    express内部是通过一个叫做stack的数组来维护这个次序的。

    xx.stack.push(fn1);
    xx.stack.push(fn2)

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-17 14:49:22

    把先调用的中间件写在前面就好了,就是这么直接。

    返事
    0
  • キャンセル返事