首先,检查 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);