下载.jpg

koa2是express框架的原班人马打造,仅仅只有600 700行代码,可谓超轻量级做小程序,博客轻量级程序,可以不用express,koa2也是一个非常不错的选择;

首先我们来看看koa2的入门demo吧,首先安装koa2,直接npm安装即可;

const koa = require('koa')
const app = new koa()

app.use(async(ctx,next)=>{
ctx.body = '1'
//下一个中间件
next();
//上下文
ctx.body = ctx.body+ '2'
})

app.use(async(ctx,next)=>{
ctx.body = '1'
//下一个中间件
next();
//上下文
ctx.body = ctx.body+ '2'
})

app.use(async(ctx,next)=>{
ctx.body = '1'
//下一个中间件
next();
//上下文
ctx.body = ctx.body+ '2'
})

app.listen('3000')

所谓的消息中间件的概念,就是一个类似洋葱圈的样子,我们从请求编译到结束,会从外层进入内层,再从内层穿过外层,执行next方法就会进入下一个中间件,
ctx是上下文对象;

我们可以写一个定时方法,然后使用await方法来进行等待中间件执行完毕;

app.use(async(ctx,next)=>{
ctx.body = '3'
await delay()
//下一个中间件
await next();
//上下文
ctx.body = ctx.body+ '4'
})

自己实现一个koa2的打印logger

module.exports=async(ctx,next)=>{
const start = new Date().getTime();
await next()
const end = new Date().getTime();

console.log(ctx.request.url,end-start,ctx.body.length)
}

打印请求路径,和运行时间,还有上下午字符串长度

我们直接在server.js中app.use使用这个logger,也别忘记了引入;

koa2的路由的2种实现方法

app.use(async(ctx,next)=>{
ctx.body = '1'
if(ctx.request.url == 'qitiandasheng'){
ctx.body = '齐天大圣'
}else if(ctx.request.url == '/'){
ctx.body = '首页'
}else{
ctx.body = '

404

'
}
//下一个中间件
await next();
//上下文
ctx.body = ctx.body+ '2'
})

第一种是利用上下文对象的request.url来在中间件中做判断来做出对应的显示;

还有一个比较正规的方法是利用koa2-router,首先我们安装它

router.get('/sun', (ctx, next) => {
ctx.body = '1'
next()
});

app
.use(router.routes())
.use(router.allowedMethods());

koa router地址:https://github.com/alexmingoia/koa-router

标签: none

添加新评论