中间件
匹配路由之前和路由完成之后进行的操作就叫中间件
1-1 中间件函数
const koa = require("koa");const app = new koa();/*app.use()中间件 -->就是一些第三方的模块特点:1.一个应用程序是可以有多个中间件*//* next就是下一个中间函数 */app.use(async (ctx,next)=>{console.log(1)console.log(next())})app.use(async ctx=>{console.log(2)return 3;})app.listen(8080)
1-2 中间件next()
想执行下一个中间件,必须调用next()const koa = require("koa");const app = new koa();/*app.use()中间件 -->就是一些第三方的模块特点:1.一个应用程序是可以有多个中间件*//*1.next就是下一个中间函数2.调用next()的时候下个中间会执行3.阻塞了当前函数*/app.use(async (ctx,next)=>{console.log(1)var res = await next();console.log(res);})app.use(async ctx=>{console.log(2)return 3;})app.listen(8080)
1-3 洋葱模型
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-4 安装路由中间件
# 1.安装依赖cnpm i koa-router -S# 2.导入模块并配置const koa = require("koa");const app = new koa();const Router = require("koa-router");const router = new Router();router.get("/",async ctx=>{ctx.body = "hello world"})app.use(router.routes());app.listen(8080)
1-5 await
# await阻塞了当前线程const koa = require("koa");const app = new koa();const axios = require("axios");app.use(async (ctx,next)=>{console.log(1);let start = new Date();await axios.get("https://www.yuque.com/")let end = new Date();console.log(end-start);console.log(2)})app.listen(8000)
