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=