# 安装和 Hello World

URL: https://caijiao.org/hono/01-intro/02-install-hello-world
Source: docs/hono/01-intro/02-install-hello-world.md
Description: 学习使用 create-hono 创建 Hono 项目，分别了解通用模板和 Node.js 模板的 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
```

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