为了弥补httpServer的不足,koa对其进行了一层封装,使之api更加的人性化。
比如http中的res.end()api响应给客户端,因为是数据流,所以用end来结束好像也很合理,但是总觉得挺奇怪的,koa里则直接是res.body = {},这样子的api就更加的人性化了。
特点
·koa2完全使⽤用Promise并配合 async 来实现异步
·轻量量,⽆无捆绑
·中间件架构
·优雅的API设计
·增强的错误处理理
基础使用
const Koa = require('koa')
const app = new Koa()
app.use((ctx, next) => {
ctx.body = {
name: 'vito'
}
next()
})
app.use((ctx, next) => {
if (ctx.url === '/html') {
ctx.type = 'text/html;charset=utf-8'
ctx.body = `<b>我的名字是:${ctx.body.name}</b>` }
})
app.listen(3000)
Koa原理
koa为了了能够简化API,引⼊入上下⽂文context概念,将原始请求对象req和响应对象res封装并挂载到 context上,并且在context上设置getter和setter,从⽽而简化操作。