部署 Hono 应用
超轻量边缘优先 Web 框架,部署到 Cloudflare Workers、Vercel Edge、Deno 或 Bun。
平台进阶
为什么
Hono 是 14KB Web 框架,为边缘运行时设计,零依赖,TypeScript 优先。在 Cloudflare Workers、Deno、Bun、Node 上一致运行,是最可移植的边缘框架。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
边缘 API、webhook 和 Workers/Deno/Bun 轻量后端用 Hono。边缘部署或亚毫秒冷启动重要时优于 Express。
如何做
1. 构建 — Hono 无需构建步骤,直接在边缘运行时运行
2. Cloudflare Workers — wrangler deploy,用 Hono 的 CF 适配器
3. Vercel Edge — export const config = { runtime: "edge" },Hono 处理 Request
4. Deno — deno run --allow-net server.ts,无需构建
5. Bun — bun run server.ts,Hono 最快 JS 运行时
6. Node — @hono/node-server 适配器传统部署
7. 中间件 — app.use() 边缘鉴权、日志、CORS
示例
// src/index.ts — Hono 应用(运行时无关)
import { Hono } from "hono";
import { cors } from "hono/cors";
const app = new Hono();
app.use("*", cors());
app.get("/", (c) => c.json({ message: "Hello from Hono" }));
app.post("/api/webhook", async (c) => {
const body = await c.req.json();
return c.json({ received: true });
});
export default app; // CF Workers、Vercel Edge、Deno、Bun 通用
// wrangler.toml — Cloudflare Workers
name = "my-hono-api"
main = "src/index.ts"
compatibility_date = "2024-01-01"
// 部署:npx wrangler deploy
// Vercel:export default app(自动检测为边缘)
常见问题
- ⚠边缘无 Node API — Hono 用 Web 标准 API,Workers 无 fs/process
- ⚠body 解析失败 — 忘记 await c.req.json(),body 是一次性流
- ⚠中间件类型错误 — 用 Variables 类型泛型类型化 app 上下文
最佳实践
- ✓用 Hono 内置验证器(zod-validator)边缘类型安全请求解析
- ✓开发测试用 Bun,生产用 Cloudflare Workers — 同代码,每环境最佳运行时
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求