跳到主要内容

koa2 快速开始

hello world 代码

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

app.use(async ctx => {
ctx.body = 'hello koa2';
});

app.listen(3000);
console.log('[demo] start-quick is starting at port 3000');

node index.js 访问 http:localhost:3000

async/await 的特点

  • 可以让异步逻辑用同步写法实现
  • 最底层的 await 返回需要是 Promise 对象
  • 可以通过多层 async function 的同步写法代替传统的 callback 嵌套

koa2 简析结构

源码文件

├── lib
│ ├── application.js
│ ├── context.js
│ ├── request.js
│ └── response.js
└── package.json

这个就是 GitHub https://github.com/koajs/koa 上开源的 koa2 源码的源文件结构,核心代码就是 lib 目录下的四个文件

  • application.js 是整个 koa2 的入口文件,封装了 context,request,response,以及最核心的中间件处理流程。
  • context.js 处理应用上下文,里面直接封装部分 request.js 和 response.js 的方法
  • request.js 处理 http 请求
  • response.js 处理 http 响应

koa2 特性

  • 只提供封装好 http 上下文、请求、响应,以及基于 async/await 的中间件容器。
  • 利用 ES7 的 async/await 的来处理传统回调嵌套问题和代替 koa@1 的 generator,但是需要在 node.js 7.x 的 harmony 模式下才能支持 async/await。
  • 中间件只支持 async/await 封装的,如果要使用 koa@1 基于 generator 中间件,需要通过中间件 koa-convert 封装一下才能使用。

koa 中间件开发和使用

koa 中间件开发和使用