koa
1、koa 介绍
koa是express原班人马打造的轻量、健壮、富有表现力的nodejs框架。目前koa有koa1和koa2两个版本;koa2依赖Node.js 7.6.0 或者更高版本;koa不在内核方法中绑定任何中间件,它仅仅是一个轻量级的函数库,几乎所有功能都必须通过第三方插件来实现。
2、koa使用
-
koa安装
$ npm i koa
-
一个简单的koa服务器
const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);
-
Koa 利用中间件 控制"上游",调用"下游“;
koa是包含一组中间件函数的对象;可以将app.use里的函数理解成中间件
//这里的middleWare函数就是一个中间件 let middleWare = async (ctx,next)=>{ console.log("first middleWare"); ctx.body = "hello world"; } app.use(middleWare);
通过next()将控制转交给另一个中间件;
上述过程也可以通过"洋葱模型“来解释中间件执行顺序
3、Application对象
-
application是koa的实例 简写app
-
app.use 将给定的中间件方法添加到此应用程序,分为同步和异步,异步:通过es7中的async和await来处理
-
app.listen设置服务器端口;
-
app.on 错误处理;
4、上下文context对象常用属性及方法
-
context 将node中的request和response 封装到一个对象中,并提供一些新的api提供给用户进行操作;
ctx.app:应用程序实例引用,等同于app; ctx.req:Node 的 request 对象. ctx.res:Node 的 response 对象. ctx.request:koa中的Request对象; ctx.response:koa中的response对象; ctx.state:对象命名空间,通过中间件传递信息; ctx.throw:抛出错误;
-
request及response别名
koa会把ctx.requset上的属性直接挂载到ctx上如:ctx.header //头信息; ctx.headers ctx.method ctx.method= ctx.url ctx.url=