koa框架9 框架了解
koa框架9 框架了解
版本
koa有三个大版本,1.0、2.0、3.0;其中1.0已经过气了,3.0还未发布,2.0处于一个过渡,他即可以兼容1.0也能兼容2.0,比如1.0的generator,3.0的async。
所以2.0用async就行了,即便升级3.0也不会有问题。
基本配置
安装:
npm i koa
const Koa = require("koa");
const server = new Koa();
server.listen(8080);
server.use(async ctx => {
ctx.body = "您好";
})
引入的koa插件是一个构造函数,所以推荐变量名首字母大写。
然后我们new出这个函数赋值给server
监听端口
use监听访问内容,koa的use和express不一样,他只支持传入一个函数,不能像express那样还能判断路径,所以,这样写的话所有路由连接地址,都会返回 您好 两个字。
那么如何处理访问路径的问题,我们需要使用koa-router路由插件。
中间件
koa的中间件是按照你写的方法顺序执行的,和js的执行顺序一样,谁先写,谁先执行,都是使用use方法。
由于中间件可能会有多个,如何确保我们需要进入下一个,use的回调函数第二个参数为next函数,也就是和express一样,只有运行了next,下一个中间件函数才会执行。
并且中间件中间,ctx参数是同一个,这样就可以通过这个参数实现传参,省去了书写全局变量。
//中间件1
server.use(async (ctx, next) => {
ctx.text = "您好";
await next();
})
//中间件2
server.use(async (ctx, next) => {
ctx.color = "red";
await next();
})
//中间件3
server.use(async ctx => {
ctx.body = `<a style="color:${ctx.color}">${ctx.text}</a>`;
})
由于next实际上就等于下一个中间件函数,他是这个异步的,所以我么用用await接这个next。
最后一个中间件了,next写不写都无所谓。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据