五、中间件函数  (洋葱函数) - 图1

    1. const koa = require("koa")
    2. const app = new koa();
    3. //app.use(fn) fn--中间件
    4. //中间件:路由匹配之前和路由完成之后要进行的一些操作就加中间件
    5. app.use(async (ctx,next) => {
    6. console.log("fn1")
    7. var res = await next()
    8. console.log(res)
    9. console.log("4")
    10. })
    11. app.use(async (ctx,next) => {
    12. console.log("fn2")
    13. await next();
    14. console.log("3")
    15. return "second"
    16. })
    17. app.listen(8080)
    18. //f1 f2 3 second 4
    1. const koa = require("koa")
    2. const app = new koa();
    3. const router = require("koa-router")()
    4. //如果没有next,下一个中间函数上周执行
    5. //每读一个路由页面,都会经过这个中间件函数
    6. app.use(async(ctx,next) => {
    7. console.log("login")
    8. console.log(ctx.path)
    9. //可以获取路由的路径
    10. if (ctx.path == "/user") {
    11. } else {
    12. ctx.body = "不许看"
    13. }
    14. await next()
    15. })
    16. router.get("/", async ctx => {
    17. ctx.body="首页"
    18. })
    19. router.get("/user", async ctx => {
    20. ctx.body="核心密码"
    21. })
    22. router.get("/my", async ctx => {
    23. ctx.body="my"
    24. })
    25. app.use(router.routes());
    26. app.listen(8080)