教程 hono tutorial

Bun 与 Deno 部署

Hono 支持 Bun 和 Deno。它们都更接近现代 Web API 模型,适合快速启动服务、编写脚本 API 或部署到对应平台。

Bun 项目

创建项目:

bash
bun create hono@latest my-bun-api
cd my-bun-api
bun install
bun run dev

入口通常类似:

ts
import { Hono } from 'hono'

const app = new Hono()

app.get('/', (c) => c.text('Hello Bun!'))

export default app

Bun 可以直接运行 TypeScript,开发体验很轻。生产部署时仍然要考虑进程管理、日志、健康检查和环境变量。

Deno 项目

创建项目:

bash
deno init --npm hono@latest my-deno-api
cd my-deno-api
deno task dev

Deno 有权限模型,运行时可能需要显式允许网络、环境变量或文件访问。部署前要检查 deno.json 中的任务配置。

共享 Hono 应用

如果你希望同一套路由可在多个运行时中复用,把核心应用放进独立文件:

ts
// app.ts
import { Hono } from 'hono'

export function createApp() {
  const app = new Hono()

  app.get('/health', (c) => c.json({ ok: true }))

  return app
}

不同运行时只写入口:

ts
// index.ts
import { createApp } from './app'

export default createApp()

Node.js 入口则使用适配器:

ts
import { serve } from '@hono/node-server'
import { createApp } from './app'

serve(createApp())

注意依赖差异

不是所有 npm 包都能在 Bun、Deno、Workers 中无差别运行。选择依赖时注意:

  • 是否依赖 Node.js 原生模块。
  • 是否使用文件系统、进程、TCP Socket 等平台能力。
  • 是否支持 ESM。
  • 是否能在目标部署平台打包。

Hono 的核心代码可以跨运行时,但你的数据库驱动、日志库、鉴权库和第三方 SDK 未必可以。

选择建议

  • 已经使用 Bun 工具链,可以直接用 Bun 模板。
  • 想要 Deno 权限模型和部署生态,可以选择 Deno。
  • 需要最广泛的传统生态,Node.js 仍然更稳。
  • 目标是边缘部署,优先考虑 Cloudflare Workers 等平台模板。