首頁  >  問答  >  主體

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

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

PHPzPHPz2766 天前664

全部回覆(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
  • 取消回覆