Koa

Koa 中文文档
Koa 官方文档(英文)

介绍

Express

  • Express 是第一代最流行的web框架,对 Node.js 的 http 进行了封装。
  • Express 的 API 很简单,但是它是基于 ES5 的语法,要实现异步代码,只有一个方法:回调。如果异步嵌套层次过多,代码写起来就非常难看。

Koa

  • Koa 是 Express 的下一代 web 框架,它是基于 Node. js 开发的web框架。
  • Koa 现在暂时有两个版本:Koa 1.x 和 Koa 2.0。
  • Koa 1.0 使用Generator 实现异步,代码看起来像同步的;Koa 2 完全使用 Promise 并配合 async (await) 来实现异步。

Koa 1

var koa = require('koa');
var app = koa();

app.use('/test', function *() {
    yield doReadFile1();
    var data = yield doReadFile2();
    this.body = data;
});

app.listen(3000);

Koa 2

const Koa = require('koa');
const app = new Koa();

app.use(async (ctx, next) => {
    await next();
    var data = await doReadFile();
    ctx.response.type = 'text/plain';
    ctx.response.body = data;
});

app.listen(3000);

Generator 函数和 async 函数

Generator 函数和 async 函数的最大区别是 Generator 函数不能自动执行,需借助 co 函数库(如下代码),而 async 函数可以当作普通函数直接使用。

// Generator 函数,用于依次读取两个文件
var gen = function* (){
  var f1 = yield readFile('/etc/fstab');
  var f2 = yield readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

//Generator 函数只要传入 co 函数,就会自动执行。
var co = require('co');
co(gen);

//co 函数返回一个 Promise 对象,因此可以用 then 方法添加回调函数。
co(gen).then(function (){
  console.log('Generator 函数执行完成');
})

安装

使用

应用

上下文

请求

响应

你可能感兴趣的:(Koa)