Skip to content

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 服务,Hono 被用于提供 API 服务
Cloudflare D1Cloudflare Workers无服务器 SQL 数据库,Hono 被用于内部 API 服务
Cloudflare Workers KVCloudflare Workers无服务器键值数据库,Hono 被用于内部 API 服务
BaseAI本地 AI 服务器带有记忆功能的无服务器 AI Agent 流水线开源框架,使用 Hono 搭建 API 服务器
UnkeyCloudflare Workers开源的 API 鉴权与授权平台,Hono 被用于 API 服务器
OpenStatusBun开源的网站与 API 监控平台,Hono 被用于 API 服务器
Deno BenchmarksDeno基于 V8 的安全 TypeScript 运行时,Hono 用于基准测试
ClerkCloudflare Workers开源的用户管理平台,Hono 被用于 API 服务器

还有以下团队也在生产环境中使用 Hono:

想了解更多?请访问 Who is using Hono in production?

一分钟体验 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
  • Cloudflare Pages
  • Fastly Compute
  • Deno
  • Bun
  • Vercel
  • AWS Lambda
  • Lambda@Edge
  • 以及更多

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

查看 更多关于 Web 标准的信息

中间件与助手

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 编写,自带“类型”。

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

屏幕截图展示了当 URL 带有参数时,Hono 能正确推断字面量类型。路径 "/entry/:date/:id" 会让请求参数变成 "date" 或 "id"

借助 Validator 与 Hono Client hc,可以启用 RPC 模式。 在该模式下,你可以继续使用自己喜爱的校验器(如 Zod),轻松在服务端与客户端之间共享 API 规范,从而构建类型安全的应用。

查看 Hono Stacks

Released under the MIT License.