首先,檢查 Node 版本。Koa 必須使用 7.6 以上的版本。若是你的版本低於這個要求,就要先升級 Node。html
這裏咱們平時用的是6.11.0版本,須要換成8.1版本
推薦使用 nvm 來管理Node版本:前端
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash $ nvm install 8.1 $ nvm alias default 8.1
而後是在中間件鏈接的方式上有所不一樣。node
舉例:好比一個服務器處理時間/日誌的中間件的開發:
express:
request進來,記錄時間到request._startTime上。綁定一個函數到response的'end','finish'以及response.socket的'error','close'事件上。那個函數會用當前時間和startTime作差,算出運行時間。此express版的計時器是express自帶的服務器日誌中間件morgan的實現。
koa2:git
const xTime = async(ctx,next) => { let start = new Date await next() ctx.set('X-Response-Time',(new Date)-start)+'ms') }
不管是 Koa 還 Express 的框架,架構的方式雖不一樣,可是 HTTP 請求的流轉方式是近似的,對於業務層面的實現並沒有太大鴻溝github
實戰教程(6)使用fetch有一部分講解express
npm install koa koa-body koa-router --save-dev
var app = require('koa')(); var router = require('koa-router')(); var koaBody = require('koa-body')(); router.get('/', function *(next) { this.body = 'hello koa !' }); router.get('/api', function *(next) { this.body = 'test data' }); router.get('/api/1', function *(next) { this.body = 'test data 1' }); router.get('/api/2', function *(next) { this.body = { a: 1, b: '123' } }); router.post('/api/post', koaBody, function *(next) { console.log(this.request.body) this.body = JSON.stringify(this.request.body) }); app.use(router.routes()) .use(router.allowedMethods()); app.listen(3000);