快速入门
安装 Node.js
首先,检查 Node 版本。Koa 必须使用 7.6 以上的版本。如果你的版本低于这个要求,就要先升级 Node。
这里我们平时用的是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
express vs koa
不同
- koa和express在表现上的一点不同是采用ctx一个参数来调用中间件,而不是express的req, res。
-
然后是在中间件连接的方式上有所不同。
- express的设计是串联的,设计思路超级简洁。
- koa的某一个中间件可以自行选择之后中间件的执行位置的。
举例:比如一个服务器处理时间/日志的中间件的开发:
express:
request进来,记录时间到request._startTime上。绑定一个函数到response的'end','finish'以及response.socket的'error','close'事件上。那个函数会用当前时间和startTime做差,算出运行时间。此express版的计时器是express自带的服务器日志中间件morgan的实现。
koa2:
const xTime = async(ctx,next) => {
let start = new Date
await next()
ctx.set('X-Response-Time',(new Date)-start)+'ms')
}
- 这是在功能上,在错误处理上的友好度也更高
无论是 Koa 还 Express 的框架,架构的方式虽不同,但是 HTTP 请求的流转方式是近似的,对于业务层面的实现并无太大鸿沟
安装依赖
前端用koa模拟动态接口
实战教程(6)使用fetch有一部分讲解
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);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。