Bun 与 Deno 部署
Hono 支持 Bun 和 Deno。它们都更接近现代 Web API 模型,适合快速启动服务、编写脚本 API 或部署到对应平台。
Bun 项目
创建项目:
bun create hono@latest my-bun-api
cd my-bun-api
bun install
bun run dev
入口通常类似:
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hello Bun!'))
export default app
Bun 可以直接运行 TypeScript,开发体验很轻。生产部署时仍然要考虑进程管理、日志、健康检查和环境变量。
Deno 项目
创建项目:
deno init --npm hono@latest my-deno-api
cd my-deno-api
deno task dev
Deno 有权限模型,运行时可能需要显式允许网络、环境变量或文件访问。部署前要检查 deno.json 中的任务配置。
共享 Hono 应用
如果你希望同一套路由可在多个运行时中复用,把核心应用放进独立文件:
// app.ts
import { Hono } from 'hono'
export function createApp() {
const app = new Hono()
app.get('/health', (c) => c.json({ ok: true }))
return app
}
不同运行时只写入口:
// index.ts
import { createApp } from './app'
export default createApp()
Node.js 入口则使用适配器:
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 等平台模板。
相关内容
- Hono 是什么 介绍 Hono 的定位、核心特点、Web Standards 思路、多运行时能力,以及它与传统 Node.js Web 框架的差异。
- 安装和 Hello World 学习使用 create-hono 创建 Hono 项目,分别了解通用模板和 Node.js 模板的 Hello World 写法。
- 运行时选择 对比 Hono 在 Node.js、Cloudflare Workers、Bun、Deno 等运行时中的入口写法、部署方式和适用场景。
- 路由基础 学习 Hono 的 GET、POST、动态参数、通配符、路由分组和模块化路由写法。
- Context 详解 介绍 Hono Context 的 req、json、text、html、redirect、header、status、set、get 等常用 API。
- 中间件机制 学习 Hono 中间件的执行顺序、自定义中间件写法、路径匹配、next 调用和常见使用场景。