# Hono 是什么

URL: https://caijiao.org/hono/01-intro/01-what-is-hono
Source: docs/hono/01-intro/01-what-is-hono.md
Description: 介绍 Hono 的定位、核心特点、Web Standards 思路、多运行时能力，以及它与传统 Node.js Web 框架的差异。

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 等内置中间件，也支持第三方中间件。 |

## 一个最小应用

```ts
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 的学习成本不高，但生产项目仍然需要补齐日志、错误追踪、配置、鉴权、数据库连接和测试策略。
