環(huán)境準備
node v8.11.1 (因為node.js v7.6.0開始完全支持async/await)
安裝koa2
# 初始化package.json
npm init
# 安裝koa2
npm install koa
Hello koa2
// 導入koa,和koa 1.x不同,在koa2中,我們導入的是一個class,因此用大寫的Koa表示:
const Koa = require('koa')
// 創(chuàng)建一個Koa對象表示web app本身:
const app = new Koa()
// 對于任何請求,app將調用該異步函數處理請求:
app.use( async ( ctx ) => {
ctx.body = 'hello koa2'
})
// 在端口3000監(jiān)聽:
app.listen(3000)
啟動dome
node index.js
訪問http:localhost:3000
注:
async (ctx, next) => {
await next();
// 設置response的Content-Type:
ctx.response.type = 'text/html';
// 設置response的內容:
ctx.response.body = '<h1>Hello, koa2!</h1>';
}
其中,參數ctx是由koa傳入的封裝了request和response的變量,我們可以通過它訪問request和response,next是koa傳入的將要處理的下一個異步函數。
上面的異步函數中,我們首先用await next();處理下一個異步函數,然后,設置response的Content-Type和內容。
由async標記的函數稱為異步函數,在異步函數中,可以用await調用另一個異步函數,這兩個關鍵字將在ES7中引入。