[ PROMPT_NODE_27892 ]
hono
[ SKILL_DOCUMENTATION ]
# Hono Web 框架
## 概述
Hono(日语中意为“火焰”)是一个基于 Web 标准(`Request`/`Response`/`fetch`)构建的小型、超快速 Web 框架。它可以在任何地方运行:Cloudflare Workers、Deno Deploy、Bun、Node.js、AWS Lambda 以及任何兼容 WinterCG 的运行时,且代码保持一致。Hono 的路由器是目前最快的路由器之一,其中间件系统、内置的 JSX 支持以及 RPC 客户端使其成为边缘 API、BFF 和轻量级全栈应用的强力选择。
## 何时使用此工具
- 当构建用于边缘部署(Cloudflare Workers, Deno Deploy)的 REST 或 RPC API 时
- 当需要为 Bun 或 Node.js 提供最小化但类型安全的服务器框架时
- 当构建具有低延迟要求的后端即前端(BFF)层时
- 当从 Express 迁移但希望获得更好的 TypeScript 支持和边缘兼容性时
- 当用户询问关于 Hono 路由、中间件、`c.req`、`c.json` 或 `hc()` RPC 客户端时
## 工作原理
### 第一步:项目设置
**Cloudflare Workers(推荐用于边缘):**
bash
npm create hono@latest my-api
# 选择: cloudflare-workers
cd my-api
npm install
npm run dev # Wrangler 本地开发
npm run deploy # 部署到 Cloudflare
**Bun / Node.js:**
bash
mkdir my-api && cd my-api
bun init
bun add hono
typescript
// src/index.ts (Bun)
import { Hono } from 'hono';
const app = new Hono();
app.get('/', c => c.text('Hello Hono!'));
export default {
port: 3000,
fetch: app.fetch,
};
### 第二步:路由
typescript
import { Hono } from 'hono';
const app = new Hono();
// 基本方法
app.get('/posts', c => c.json({ posts: [] }));
app.post('/posts', c => c.json({ created: true }, 201));
app.put('/posts/:id', c => c.json({ updated: true }));
app.delete('/posts/:id', c => c.json({ deleted: true }));
// 路由参数和查询字符串
app.get('/posts/:id', async c => {
const id = c.req.param('id');
const format = c.req.query('format') ?? 'json';
return c.json({ id, format });
});
// 通配符
app.get('/static/*', c => c.text('static file'));
export default app;
**链式路由:**
typescript
app
.get('/users', listUsers)
.post('/users', createUser)
.get('/users/:id', getUser)
.patch('/users/:id', updateUser)
.delete('/users/:id', deleteUser);
### 第三步:中间件
Hono 中间件的工作方式与 `fetch` 拦截器完全相同 — 在处理程序之前和之后执行:
typescript
import { Hono } from 'hono';
import { logger } from 'hono/logger';
import { cors