Hono
边缘运行时、轻量路由。
30 分钟
Hono
Hono 是 极轻量 的 Web 框架,核心很小,却能在 Node、Bun、Deno、Cloudflare Workers 上跑同一套路由代码。适合边缘函数、Serverless、或「一个文件起一个 API」的场景。
学习目标
- 用 Hono 定义路由与中间件
- 理解边缘运行时与 Node 本地的差异
- 判断 Hono vs Fastify vs Express 的适用边界
基本应用
import { Hono } from "hono";
const app = new Hono();
app.get("/health", (c) => c.json({ ok: true }));
app.get("/api/tracks/:slug", (c) => {
const slug = c.req.param("slug");
return c.json({ slug, title: "示例 Track" });
});
export default app;
// Node: @hono/node-server 的 serve(app)
// Workers: export default app 作为 fetch handler
Context c 统一封装 request/response,写法接近现代 Web 标准。
边缘 vs Node
| 维度 | Node + Fastify | Hono on Workers |
|---|---|---|
| 冷启动 | 进程常驻 | 函数级、毫秒级 |
| 状态 | 内存、连接池 | 无长连接,靠 KV/D1 |
| 适用 | 传统 VPS/K8s API | CDN 边缘、全球低延迟 |
本站主 API 仍跑 Java/Node 长驻进程;Hono 适合 BFF 边缘缓存、Webhook 转发、轻量代理。
中间件与组合
app.use("*", async (c, next) => {
const start = Date.now();
await next();
c.header("X-Response-Time", `${Date.now() - start}ms`);
});
可挂载 CORS、JWT、Rate Limit 等官方/社区 middleware;复杂 DI 与分层仍建议 nestjs-essentials 或 Fastify 插件体系。
练习
- 本地用
@hono/node-server跑通/health - 对比同一路由在 Express 与 Hono 下的代码行数
- 阅读 Cloudflare Workers 文档中 Hono 示例(选做)
小结
Hono = 小核心 + 多运行时 + Web 标准友好。 下一课 HTTP 客户端:出站请求怎么选。
加载本节练习…