入门指南

h3 入门指南

概览

h3(HTTP 的缩写,发音为 /eɪtʃθriː/,类似于 h-3)是一个轻量级、极速且可组合的基于 Web 标准、适用于任何 JavaScript 运行时的 JavaScript 服务器框架。

你正在阅读的是 h3 版本 2(候选发布版)的文档。
查看功能完善的服务器工具包 Nitro

快速开始

安装 h3 作为依赖:

npm i h3

创建一个新文件 server.mjs

server.mjs
import { H3, serve } from "h3";

const app = new H3();

app.get("/", () => "⚡️ Tadaa!");

serve(app, { port: 3000 });

然后,使用你喜欢的运行时启动服务器:

node --watch ./server.mjs

就这样!我们的本地 Web 服务器已经运行。

发生了什么?

好,现在我们来解析这个 hello world 示例。

我们首先使用 new H3() 创建一个 h3 应用实例

const app = new H3(/* 可选配置 */);

app 是一个小巧的服务器,能够匹配路由、生成响应并处理生命周期钩子,例如错误处理。

然后我们创建并注册一个路由,用来处理指向 / 路径的 HTTP GET 请求。

app.get("/", () => {
  return { message: "⚡️ Tadaa!" };
});
路由功能由 🌳 rou3 提供支持,这是一款超快且轻量的路由匹配引擎。

在 h3 事件处理函数中,你只需简单地返回内容即可生成响应!响应可以是简单的 字符串JSON 对象二进制数据错误... 或标准的 Web Response

Read more in 响应类型.

最后,我们使用 serve 方法启动服务器监听。

Serve 方法由 💥 srvx 提供支持。
根据运行时和导出条件,会自动加载正确的适配器。
你也可以直接导出或使用 app.fetch(request)

通过 CDN 使用

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

import { H3, toWebHandler } from "https://esm.sh/h3";

const app = new H3();

export const fetch = app.fetch;

运行及部署

通过 serve(app, options?),你可以轻松在 DenoNode.jsBun 运行时中运行 h3 应用。

Read more in srvx.unjs.io/guide/options.

主要的 h3 应用实例提供了 app.fetch,可直接用于在任何兼容 Web 的运行时中运行 h3 应用,甚至可直接调用它进行测试。

Read more in app.fetch.
test.mjs
import { H3, serve } from "h3";

const app = new H3().get("/", () => "⚡️ Tadaa!");

// 无需监听即可测试
const response = await app.fetch("/");
console.log(await response.text());
为了零配置即可部署到各大提供商,我们推荐使用 Nitro