教程 hono tutorial

安装和 Hello World

Hono 官方推荐使用 create-hono 创建项目。创建时可以选择目标运行时模板,例如 cloudflare-workers、nodejs、bun、deno、vercel 等。

创建项目

使用 pnpm:

bash
pnpm create hono@latest my-hono-app

进入项目并安装依赖:

bash
cd my-hono-app
pnpm install
pnpm dev

也可以通过参数直接指定模板:

bash
pnpm create hono@latest my-hono-app -- --template nodejs

如果你的目标是 Cloudflare Workers,可以选择:

bash
pnpm create hono@latest my-worker -- --template cloudflare-workers

通用 Hello World

多数 Hono 模板的核心代码都类似:

ts
import { Hono } from 'hono'

const app = new Hono()

app.get('/', (c) => {
  return c.text('Hello Hono!')
})

export default app

c 是当前请求的 Context。你可以用它读取请求、设置响应头、返回文本、JSON、HTML 或重定向。

Node.js Hello World

在 Node.js 中运行 Hono 需要 @hono/node-server 适配器:

ts
import { serve } from '@hono/node-server'
import { Hono } from 'hono'

const app = new Hono()

app.get('/', (c) => {
  return c.text('Hello Node.js!')
})

serve(app)

如果需要指定端口:

ts
serve({
  fetch: app.fetch,
  port: 8787,
})

Node.js 模板通常会把开发命令写在 package.json 中:

json
{
  "scripts": {
    "dev": "tsx watch src/index.ts"
  }
}

Node.js 版本要求

Hono 的 Node.js 适配器依赖较新的 Web API 能力。官方 Node.js 指南要求:

Node.js 主版本 最低小版本
18.x 18.14.1+
19.x 19.7.0+
20.x 20.0.0+

实际项目中建议直接使用当前维护中的 LTS 或更新版本。

目录结构示例

Node.js 项目可以从简单结构开始:

text
my-hono-app/
├─ package.json
├─ tsconfig.json
└─ src/
   └─ index.ts

当路由变多时,再拆分为:

text
src/
├─ index.ts
├─ routes/
│  ├─ users.ts
│  └─ posts.ts
├─ middleware/
│  └─ auth.ts
└─ lib/
   └─ response.ts

先保持结构简单。只有当路由、鉴权、数据库访问等逻辑增长到难以阅读时,再拆模块。