文章不易,請關注公眾號 毛毛蟲的小小蠟筆,多多支持,謝謝
先看個Demo
app.use(async (ctx, next) => {
console.log(1)
await next()
console.log(2)
ctx.body = 'Hello Koa';
});
app.use(async (ctx, next) => {
console.log(3)
await next()
console.log(4)
});
app.use(async (ctx, next) => {
console.log(5)
});
輸出結果是:
1
3
5
4
2
這就是所謂的洋葱模型。
第一個中間件在最外層,然後第二個在第二層,第三個則是最裏面一層。
所以先執行1,然後到第二層的3,再到最裏面的5,執行完後再到第二層的4,最後返回到第一層的2。
看源碼
app.use最主要的是把中間件存起來:this.middleware.push(fn)。
詳情 請查看:毛毛蟲的小小蠟筆