一、中间件

  1. 匹配路由之前和路由完成之后进行的操作就叫中间件

二、中间件函数

  1. const koa = require("koa");
  2. const app = new koa();
  3. /*
  4. app.use()中间件 -->就是一些第三方的模块
  5. 特点:
  6. 1.一个应用程序是可以有多个中间件
  7. */
  8. /* next就是下一个中间函数 */
  9. app.use(async (ctx,next)=>{
  10. console.log(1)
  11. console.log(next())
  12. })
  13. app.use(async ctx=>{
  14. console.log(2)
  15. return 3;
  16. })
  17. app.listen(8080)

三、中间件next

  1. 想执行下一个中间件,必须调用next()
  1. const koa = require("koa");
  2. const app = new koa();
  3. /*
  4. app.use()中间件 -->就是一些第三方的模块
  5. 特点:
  6. 1.一个应用程序是可以有多个中间件
  7. */
  8. /*
  9. 1.next就是下一个中间函数
  10. 2.调用next()的时候下个中间会执行
  11. 3.阻塞了当前函数
  12. */
  13. app.use(async (ctx,next)=>{
  14. console.log(1)
  15. var res = await next();
  16. console.log(res);
  17. })
  18. app.use(async ctx=>{
  19. console.log(2)
  20. return 3;
  21. })
  22. app.listen(8080)

四、洋葱模型

const koa = require("koa");
const app = new koa();
/* koa洋葱模型 */
app.use(async (ctx,next)=>{
    console.log(1)
    await next();
    console.log(4)
})
app.use(async (ctx,next)=>{
    console.log(2)
    await next();
    console.log(3)

})
app.listen(8080)

1
2
3
4

二、koa - 图1