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 上运行。相同的代码可以在所有平台上运行。
  • 开箱即用 🔋 - Hono 具有内置中间件、自定义中间件、第三方中间件和助手函数。开箱即用,功能齐全。
  • 愉悦的开发者体验 (DX) 😃 - 超级简洁的 API。一流的 TypeScript 支持。现在,我们有了“Types”。

用例

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 服务器
BaseAILocal AI Server具有内存的无服务器 AI 代理管道。一个用于 Web 的开源代理 AI 框架。使用 Hono 的 API 服务器
UnkeyCloudflare Workers一个开源的 API 身份验证和授权服务。Hono 被用于 API 服务器
OpenStatusBun一个开源的网站和 API 监控平台。Hono 被用于 API 服务器
Deno BenchmarksDeno一个基于 V8 构建的安全 TypeScript 运行时。Hono 被用于基准测试

以及以下项目。

想要了解更多?请查看 谁在生产环境中使用 Hono?

1 分钟了解 Hono

一个使用 Hono 为 Cloudflare Workers 创建应用程序的演示。

Demo

超快速

Hono 是最快的,与其他 Cloudflare Workers 路由器相比。

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 世界中最快的路由器。它使用在分发之前创建的单个大型 Regex 来匹配路由。借助 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 拥有许多中间件和助手函数。这使得 “Write Less, do more(少写代码,多做事情)” 成为现实。

开箱即用,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 拥有 “Types”。

例如,路径参数将是字面量类型。

SS

并且,Validator 和 Hono Client hc 启用了 RPC 模式。在 RPC 模式下, 您可以使用您最喜欢的验证器(如 Zod),并轻松地与客户端共享服务器端 API 规范,构建类型安全的应用。

请查看 Hono Stacks

在 MIT 许可证下发布。