# 框架对比

URL: https://caijiao.org/hono/07-appendix/01-compare-frameworks
Source: docs/hono/07-appendix/01-compare-frameworks.md
Description: 对比 Hono、Express、Koa、Fastify 的设计重点、运行时支持、生态成熟度和适用场景。

Hono、Express、Koa、Fastify 都能写 Web API，但它们解决问题的重点不同。

## 对比表

| 维度 | Hono | Express | Koa | Fastify |
| --- | --- | --- | --- | --- |
| 核心定位 | 多运行时、Web Standards、轻量 API | Node.js 经典 Web 框架 | 轻量中间件模型 | 高性能 Node.js 框架 |
| 运行时 | Workers、Node.js、Bun、Deno 等 | 主要是 Node.js | 主要是 Node.js | 主要是 Node.js |
| 中间件模型 | `(c, next)`，接近 Fetch 响应 | `(req, res, next)` | 洋葱模型，`ctx` | Hooks、插件和路由生命周期 |
| 类型体验 | TypeScript 友好，支持 RPC 类型推导 | 依赖类型包和生态约定 | 类型体验一般 | 类型与 schema 支持较强 |
| 生态成熟度 | 新，但增长快 | 极成熟 | 稳定但热度较低 | 成熟，插件体系强 |
| 适合场景 | 边缘 API、轻量服务、多运行时项目 | 传统 Node.js 服务、教学、老项目 | 自定义中间件较多的 Node 服务 | 高吞吐 API、插件化服务 |

## 什么时候选 Hono

- 你要部署到 Cloudflare Workers、Bun、Deno 或多个运行时。
- 你希望路由和中间件尽量贴近 Fetch API。
- 你想在 TypeScript 全栈项目中共享 API 类型。
- 你的服务偏轻量，不需要框架内置大量架构约束。

## 什么时候选 Express

- 项目依赖大量 Express 中间件或旧代码。
- 团队熟悉 Express，稳定性和生态优先。
- 你在教学或快速验证传统 Node.js API。

Express 的优势是生态和经验。它不是最新的设计，但很多问题已经有成熟答案。

## 什么时候选 Koa

- 你喜欢洋葱模型，想保持框架非常轻。
- 团队愿意自己组合路由、验证、错误处理等周边能力。
- 项目不需要强插件体系。

Koa 的思想简洁，但需要自己做更多工程化选择。

## 什么时候选 Fastify

- 目标是 Node.js 高性能 API。
- 需要成熟插件、schema 验证、序列化优化和生命周期钩子。
- 团队希望框架比 Express 更有约束，但不想用 NestJS 这样的大框架。

Fastify 更像完整的 Node.js API 框架；Hono 更像跨运行时轻量内核。

## 选择建议

如果你的部署目标是边缘平台或多运行时，Hono 很值得优先考虑。如果项目完全运行在 Node.js，且依赖大量传统 Node 生态，Fastify 或 Express 仍然是稳妥选择。
