Hono 是什么
Hono 是一个小巧、快速、基于 Web Standards 的 Web 框架。它的核心模型围绕 Fetch API、Request、Response 和中间件展开,因此同一套业务代码可以在多个 JavaScript 运行时中复用。
官方文档把 Hono 描述为可以运行在 Cloudflare Workers、Fastly Compute、Deno、Bun、Vercel、Netlify、AWS Lambda、Lambda@Edge 和 Node.js 等环境中的框架。Node.js 并不是 Hono 最早的设计目标,但可以通过适配器运行。
核心特点
| 特点 | 说明 |
|---|---|
| Web 标准优先 | 使用 Fetch API、Request、Response 等标准对象组织应用。 |
| 多运行时 | 核心路由和中间件代码可迁移到 Workers、Node.js、Bun、Deno 等平台。 |
| 体积小 | 框架内核简洁,适合 API、边缘函数和轻量服务。 |
| TypeScript 友好 | 支持为环境变量、路由参数、验证结果和 RPC 客户端推导类型。 |
| 中间件生态 | 提供 CORS、JWT、Logger、Basic Auth、ETag 等内置中间件,也支持第三方中间件。 |
一个最小应用
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => {
return c.text('Hello Hono!')
})
export default app
这个例子没有依赖 Node.js 的 http 模块。它返回的是 Web 标准中的响应对象,因此在 Cloudflare Workers、Bun、Deno 等环境中更自然。
与 Express、Koa、Fastify 的区别
| 框架 | 常见定位 | Hono 的差异 |
|---|---|---|
| Express | Node.js 生态中最经典的 Web 框架 | Hono 更贴近 Fetch API,跨运行时能力更强。 |
| Koa | 轻量中间件模型,依赖 async/await |
Hono 也使用中间件模型,但 Context 和响应方式更接近 Web 标准。 |
| Fastify | 高性能 Node.js 框架,插件体系成熟 | Hono 更强调边缘平台、多运行时和类型共享。 |
选择 Hono 时,不要只看性能。更重要的问题是:你的项目是否需要跨运行时、边缘部署、轻量 API,以及 TypeScript 类型共享。
什么时候不适合
- 你需要内置 ORM、依赖注入、模块系统和大型后端架构约束。
- 团队已经围绕 Express、NestJS 或 Fastify 建立了成熟基础设施。
- 项目严重依赖 Node.js 原生中间件,且不打算迁移到 Fetch API 思维。
Hono 的学习成本不高,但生产项目仍然需要补齐日志、错误追踪、配置、鉴权、数据库连接和测试策略。
相关内容
- 安装和 Hello World 学习使用 create-hono 创建 Hono 项目,分别了解通用模板和 Node.js 模板的 Hello World 写法。
- 运行时选择 对比 Hono 在 Node.js、Cloudflare Workers、Bun、Deno 等运行时中的入口写法、部署方式和适用场景。
- 路由基础 学习 Hono 的 GET、POST、动态参数、通配符、路由分组和模块化路由写法。
- Context 详解 介绍 Hono Context 的 req、json、text、html、redirect、header、status、set、get 等常用 API。
- 中间件机制 学习 Hono 中间件的执行顺序、自定义中间件写法、路径匹配、next 调用和常见使用场景。
- 错误处理 学习 Hono 中的 notFound、onError、HTTPException、自定义错误响应和接口错误设计。