更新于

koa框架9 框架了解

发布于 / 分类: Node / 暂无评论 / 阅读量: 77

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写不写都无所谓。

暂无评论

Info
站点信息

以前觉得活下去很难,现在发现活的好才难!

创建于20156

总共发表了327篇文章

共有545条评论

创建了21个分类目录

Archive
时间归档
Weather
天气

湿度
Catalog
目录树
设置
配色方案

布局