Koa.js 核心
Koa 是由 Express 原班人马打造的更小、更富有表现力、更健壮的 Web 框架。
1. 特性
- 轻量级: 内核很小,没有捆绑任何中间件。
- Async/Await: 丢弃回调函数,优雅处理异步。
- Context (ctx): 封装了 node 的 request 和 response 对象。
2. 洋葱模型 (Onion Model)
Koa 的中间件执行顺序遵循“洋葱模型”(先进后出)。
javascript
app.use(async (ctx, next) => {
console.log('1. 进入外层');
await next(); // 等待下一个中间件执行完毕
console.log('4. 回到外层');
});
app.use(async (ctx, next) => {
console.log('2. 进入内层');
await next();
console.log('3. 回到内层');
});
// 输出顺序: 1 -> 2 -> 3 -> 43. 与 Express 区别
| 特性 | Express | Koa |
|---|---|---|
| 中间件机制 | 线性 callback | 洋葱模型 async/await |
| 内置功能 | 内置路由、模板等 | 极简,均需插件 |
| Context | req, res 分离 | 统一挂载在 ctx 上 |
4. 常用生态
koa-router: 路由koa-bodyparser: 解析 bodykoa-static: 静态资源