Node学习记录: koa

官方文档 koa
入门的话 自然是使用Koa 框架教程

快速入门

安装 Node.js

首先,检查 Node 版本。Koa 必须使用 7.6 以上的版本。如果你的版本低于这个要求,就要先升级 Node。

Node学习记录: koa

Node学习记录: koa

这里我们平时用的是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 请求的流转方式是近似的,对于业务层面的实现并无太大鸿沟

安装依赖

Node学习记录: koa

前端用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);

参考

跨入Koa2.0,从Compose开始

相关推荐