跳转到正文

Hono ​

Hono ——日语中意为 火焰🔥 ——是一个基于 Web 标准构建的小巧、简洁、极速的 Web 框架。 它可以运行在各种 JavaScript 运行时上:Cloudflare Workers、Fastly Compute、Deno、Bun、Vercel、Netlify、AWS Lambda、Lambda@Edge 和 Node.js。

很快,但不止于快。

ts
import { 
Hono
} from 'hono'
const
app
= new
Hono
()
app
.
get
('/', (
c
) =>
c
.
text
('Hono!'))
export default
app

快速开始 ​

只需运行以下命令:

sh
npm create hono@latest
sh
yarn create hono
sh
pnpm create hono@latest
sh
bun create hono@latest
sh
deno init --npm hono@latest

特性 ​

  • 极速 🚀 —— RegExpRouter 路由器速度极快,不使用线性循环。
  • 轻量 🪶 —— hono/tiny 预设小于 14kB。Hono 零依赖,只使用 Web 标准。
  • 多运行时 🌍 —— 支持 Cloudflare Workers、Fastly Compute、Deno、Bun、AWS Lambda 和 Node.js。同一份代码可在所有平台上运行。
  • 开箱即用 🔋 —— 提供内置中间件、自定义中间件、第三方中间件和辅助函数。
  • 愉悦的开发体验 😃 —— 简洁的 API,一流的 TypeScript 支持,让“类型”贯穿开发过程。

使用场景 ​

Hono 是一个类似 Express 的简洁 Web 应用框架,本身不包含前端。 它还可以运行在 CDN 边缘节点上,并通过中间件组合构建大型应用。 以下是一些使用场景。

  • 构建 Web API
  • 后端服务器代理
  • CDN 前置服务
  • 边缘应用
  • 库的基础服务器
  • 全栈应用

谁在使用 Hono? ​

项目平台用途
cdnjsCloudflare Workers免费开源的 CDN 服务。API 服务器使用 Hono。
Cloudflare D1Cloudflare Workers无服务器 SQL 数据库。内部 API 服务器使用 Hono。
Cloudflare Workers KVCloudflare Workers无服务器键值数据库。内部 API 服务器使用 Hono。
BaseAILocal AI Server支持记忆的无服务器 AI 智能体管道,面向 Web 的开源智能体 AI 框架。API 服务器使用 Hono。
UnkeyCloudflare Workers开源 API 认证与授权服务。API 服务器使用 Hono。
OpenStatusBun开源网站与 API 监控平台。API 服务器使用 Hono。
Deno BenchmarksDeno基于 V8 构建的安全 TypeScript 运行时。使用 Hono 进行性能测试。
ClerkCloudflare Workers开源用户管理平台。API 服务器使用 Hono。
PostHogNode.js用于构建自主驱动产品的开源平台。MCP 服务器使用 Hono。

还有以下项目。

想了解更多?请参阅谁在生产环境中使用 Hono?。

一分钟了解 Hono ​

下面演示如何使用 Hono 为 Cloudflare Workers 创建应用。

演示快速创建 Hono 应用并迭代开发的动图。

极速 ​

与其他用于 Cloudflare Workers 的路由器相比,Hono 的速度最快。

Hono x 402,820 ops/sec ±4.78% (80 runs sampled)
itty-router x 212,598 ops/sec ±3.11% (87 runs sampled)
sunder x 297,036 ops/sec ±4.76% (77 runs sampled)
worktop x 197,345 ops/sec ±2.40% (88 runs sampled)
Fastest is Hono
✨  Done in 28.06s.

参阅更多性能测试。

轻量 ​

Hono 非常小巧。使用 hono/tiny 预设时,压缩后的体积 小于 14KB。虽然有很多中间件和适配器,但它们只有在使用时才会被打包。作为对比,Express 的体积是 572KB。

$ npx wrangler dev --minify ./src/index.ts
 ⛅️ wrangler 2.20.0
--------------------
⬣ Listening at http://0.0.0.0:8787
- http://127.0.0.1:8787
- http://192.168.128.165:8787
Total Upload: 11.47 KiB / gzip: 4.34 KiB

多种路由器 ​

Hono 提供多种路由器。

RegExpRouter 是 JavaScript 领域最快的路由器。它使用派发前生成的单个大型正则表达式进行路由匹配。结合 SmartRouter 使用时,可以支持所有路由模式。

LinearRouter 的路由注册速度很快,适合每次请求都会初始化应用的环境。PatternRouter 直接添加和匹配路由模式,因此体积很小。

参阅关于路由器的更多信息。

Web 标准 ​

由于使用 Web 标准,Hono 可以运行在很多平台上。

  • Cloudflare Workers
  • Fastly Compute
  • Deno
  • Bun
  • Vercel
  • AWS Lambda
  • Lambda@Edge
  • 其他平台

使用 Node.js 适配器,Hono 也能运行在 Node.js 上。

参阅关于 Web 标准的更多信息。

中间件与辅助函数 ​

Hono 提供丰富的中间件和辅助函数,让“写得更少,做得更多”成为现实。

Hono 开箱即用的中间件和辅助函数包括:

例如,使用 Hono 只需几行代码,就可以添加 ETag 和请求日志功能:

ts
import { Hono } from 'hono'
import { etag } from 'hono/etag'
import { logger } from 'hono/logger'

const app = new Hono()
app.use(etag(), logger())

参阅关于中间件的更多信息。

开发体验 ​

Hono 提供愉悦的“开发体验”。

借助 Context 对象,可以轻松访问 Request 和 Response。 此外,Hono 使用 TypeScript 编写,拥有完善的“类型”。

例如,路径参数会被推导为字面量类型。

Hono 为 URL 参数提供正确的字面量类型。URL “/entry/:date/:id” 中的请求参数名称可以被识别为 “date” 或 “id”。

此外,验证器和 Hono 客户端 hc 支持 RPC 模式。在 RPC 模式下,你可以使用 Zod 等喜欢的验证器,轻松与客户端共享服务器端 API 定义,并构建类型安全的应用。

参阅 Hono 技术栈。

基于 MIT 许可证发布。