一、簡介
Koa2概述:
- 基於Node.js平台的web開發框架
- 由Express原班人馬打造:Express Koa Koa2
- async/await 要求環境依賴Node v7.6.0及以上
Koa2特點:
- 支持 async/await
- 洋蔥模型中間件:當客戶端發起一個請求到達第一層中間件並處理后,服務器處理請求,將處理結果傳遞給第二層中間件,到達第二層中間件后再處理,再將處理結果傳遞給第三層中間件,之后再進入第三層中間件處理;第三層處理后,依次將處理結果向上返回給第二層處理、第一層處理,最后第一層再響應給客戶端
二、快速上手
- 檢查Node的環境,要求環境依賴Node v7.6.0及以上
node -v
- 安裝Koa
npm init -y
npm install koa
- 創建並編寫app.js文件
1.創建Koa對象
2.編寫相應函數(中間件)
3.監聽窗口
//創建koa對象 const Koa = require('koa'); const app = new Koa() //編寫響應函數(中間件),ctx是應用上下文提供request和response方法接受和相應; //參考洋蔥模型,第二層中間件是否執行取決於第一層中間件的next()是否執行 app.use(async(ctx,next) => { console.log("koa1") const ret = await next() //執行第二層中間件,並且是異步的,next()返回一個Promise對象,在此等待第二層中間件返回后才繼續往下執行; console.log("koa1.1") }) //第二層中間件 app.use(async(ctx,next) => { console.log("koa2") const ret = await next(); //執行第三層中間件,next()的返回值來自於第三層中間件的return,並且是一個Promise{I love The dog!}對象,
//想要獲取Promise對象中的數據,需要用await,則箭頭函數要用async修飾; console.log(ret); console.log("koa2.1") }) //第三層中間件 app.use((ctx,next) => { console.log("koa3") ctx.response.body = "hello koa3!" return "I love The dog!" //向第二層中間件返回執行結果 }) //綁定端口號 app.listen(8080)
- 在瀏覽器中輸入:http://localhost:8080 發起請求
IDE控制台輸出結果: