1. Koa 中间件简介
通俗的讲:中间件就是 匹配路由之前 或者 匹配路由完成后 做的一系列的操作,我们就可以把它叫做中间件 。
【Koa 中间件】在,中间件()是一个函数,它可以访问请求对象(), 响应对象(), 和 web 应用中处理请求-响应循环流程中的中间件,一般被命名为 next 的变量 。在 Koa 中中间件和有点类似 。
中间件的功能包括:
如果 get、post 回调函数中,没有 next 参数,那么就匹配上第一个路由,就不会往下匹配了,
如果想往下匹配的话,那么需要写 next();
2. Koa 应用可使用如下几种中间件
2.1 应用级中间件
const Koa = require('koa');const Router = require('koa-router');const app = new Koa();const router = new Router();/*中间件*/// 匹配任何路由 如果不写 next,这个路由被匹配到了就不会继续向下匹配 app.use(async (ctx, next) => {ctx.body="中间件";console.log(new Date());await next();})router.get('/newsContent',async (ctx) => {ctx.body="新闻详情"})app.use(router.routes());app.use(router.allowedMethods());app.listen(3000,()=>{ console.log('应用已经启动,http://localhost:3000'); });
2.2 路由中间件
const Koa = require('koa');const Router = require('koa-router');const app = new Koa();const router = new Router();/*中间件*/// 匹配到 news 路由之后继续向下匹配 router.get('/news',async (ctx, next) => {console.log("新闻详情");await next(); })router.get('/news',async (ctx) => {ctx.body="新闻详情"})app.use(router.routes());app.use(router.allowedMethods());app.listen(3000,()=>{ console.log('应用已经启动,http://localhost:3000'); });
2.3 错误处理中间件
const Koa = require('koa');const Router = require('koa-router');const app = new Koa();const router = new Router();/*中间件*/app.use(async (ctx,next) => {console.log('中间件');await next();if(ctx.status == 404){ctx.status = 404;ctx.body = '404页面';}else{console.log(ctx.url)}})router.get('/news',async (ctx, next) => {ctx.body="新闻详情"console.log('新闻详情')})app.use(router.routes());app.use(router.allowedMethods());app.listen(3000,()=>{ console.log('应用已经启动,http://localhost:3000'); });
2.4 第三方中间件
const static = require('koa-static'); const staticPath = './static'; app.use(static( path.join( __dirname, staticPath) ))const bodyParser = require('koa-bodyparser');app.use(bodyParser());
3. Koa 中间件的执行顺序
Koa 的中间件和不同,Koa 选择了洋葱圈模型 。
- 消息中间件学习-摘抄
- 手摸手学会node框架之一——koa 傻瓜式小白教程
- 【缓存中间件】Redis哈希槽的概念
- 使用异步编程保证Koa的洋葱模型
- go 中间件洋葱模型
- koa2洋葱模型
- node.js中的Express-路由-express中间件
- Node.js:Express( express 路由,express 中间件
- 二 进击消息中间件系列:Kafka 单机与集群部署实践
- 中国航天员英语叫aikoau:已普遍使用,认可度高 中国航天是世界之最吗英语