快速开始 Getting Started

xx

概述

h3(HTTP 的缩写,发音为 /eɪtʃθriː/,类似 h-3)是一个轻量级且 可组合 的 JavaScript 服务器框架,旨在通过 适配器 与各种 JavaScript 运行时配合使用。

相关阅读:https://nitro.unjs.io

快速入门

创建一个新文件 app.ts(或 app.js):

app.ts
ts
// 导入 h3 作为 npm 依赖项
import { createApp, createRouter, defineEventHandler } from 'h3'

// 创建应用程序实例
export const app = createApp()

// 创建新路由器并在应用程序中注册
const router = createRouter()
app.use(router)

// 向 / 路径添加与 GET 请求匹配的新路由
router.get(
  '/',
  defineEventHandler((event) => {
    return { message: '⚡️ Tadaa!' }
  }),
)

现在使用 unjs/listhen 运行开发服务器:

sh
npx --yes listhen -w --open ./app.ts

您不需要安装任何额外的依赖项。Listhen 已预装了 h3 版本!

好了!我们有一个在本地运行的 Web 服务器。

发生了什么?

好的,现在让我们分解一下我们的 hello world 示例:

我们首先使用 createApp() 创建了一个 app 实例app 是一个小型服务器,能够匹配请求、生成响应和处理生命周期钩子(例如错误):

ts
export const app = createApp()

然后我们使用 unjs/radix3 创建一个可以匹配路由模式和 http 方法的 路由器实例,并将其注册为应用程序的主处理程序:

ts
const router = createRouter()

app.use(router)

现在是时候添加我们的第一个端点了。在 h3 中,可以使用 defineEventHandlereventHandler 助手(它们是别名)定义请求处理程序。使用包装器,h3 可以通过更好的类型提示和未来兼容性增强您的代码。

ts
defineEventHandler((event) => {})

h3 的妙处在于,您要做的就是简单地返回响应!响应可以是简单的字符串、JSON 对象、数据缓冲区、流或标准 Web 响应

ts
return { message: '⚡️ Tadaa!' }

最后,我们使用 unjs/listhen CLI 使用 npx 自动安装它。 Listhen 将自动设置并启动我们的网络服务器,无需任何配置,并为您的体验添加即时的 TypeScript 支持!

安装 h3

您可以将 h3 作为 npm 包或从 CDN 导入。

作为 npm 包安装

您可以将此方法用于 Node.js 和 Bun。

bash
npm
bash
npm i h3

从 CDN 导入

您可以直接从 CDN 导入 h3。此方法可用于 Bun、Deno 和其他运行时,例如 Cloudflare Workers(您需要一个适配器)。

js
import { createApp, toWebHandler } from 'https://esm.sh/h3'

export const app = createApp()

export const handler = toWebHandler(app)