Hono
Hono - **_在日语中意为火焰🔥_** - 是一个小型、简单、超快的 Web 框架,基于 Web 标准构建。它可以在任何 JavaScript 运行时环境中运行:Cloudflare Workers、Fastly Compute、Deno、Bun、Vercel、Netlify、AWS Lambda、Lambda@Edge 和 Node.js。
快速,但不仅仅是快速。
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hono!'))
export default app
快速入门
只需运行以下命令
npm create hono@latest
yarn create hono
pnpm create hono@latest
bun create hono@latest
deno run -A npm:create-hono@latest
功能
- **超快** 🚀 - 路由器
RegExpRouter
非常快。不使用线性循环。很快。 - **轻量级** 🪶 -
hono/tiny
预设小于 14kB。Hono 没有依赖项,仅使用 Web 标准。 - **多运行时** 🌍 - 可以在 Cloudflare Workers、Fastly Compute、Deno、Bun、AWS Lambda 或 Node.js 上运行。相同的代码可以在所有平台上运行。
- **内置电池** 🔋 - Hono 内置了中间件、自定义中间件、第三方中间件和帮助器。电池已包含。
- **令人愉快的 DX** 😃 - 超干净的 API。一流的 TypeScript 支持。现在,我们有了“类型”。
用例
Hono 是一个简单的 Web 应用程序框架,类似于 Express,但没有前端。但它运行在 CDN 边缘,并允许您在与中间件结合使用时构建更大的应用程序。以下是用例的一些示例。
- 构建 Web API
- 后端服务器的代理
- CDN 前端
- 边缘应用程序
- 库的基础服务器
- 全栈应用程序
谁在使用 Hono?
项目 | 平台 | 用途 |
---|---|---|
cdnjs | Cloudflare Workers | 一个免费的开源 CDN 服务。Hono 用于 API 服务器。 |
Cloudflare D1 | Cloudflare Workers | 无服务器 SQL 数据库。Hono 用于内部 API 服务器。 |
BaseAI | 本地 AI 服务器 | 具有内存的无服务器 AI 代理管道。一个开源的 Web 代理 AI 框架。使用 Hono 的 API 服务器。 |
Unkey | Cloudflare Workers | 一个开源的 API 身份验证和授权。Hono 用于 API 服务器。 |
OpenStatus | Bun | 一个开源的网站和 API 监控平台。Hono 用于 API 服务器。 |
Deno 基准测试 | Deno | 一个基于 V8 构建的安全 TypeScript 运行时。Hono 用于基准测试。 |
以及以下。
- Drivly - Cloudflare Workers
- repeat.dev - Cloudflare Workers
您想了解更多吗?请查看 谁在生产环境中使用 Hono?。
1 分钟内了解 Hono
一个演示,展示如何使用 Hono 创建 Cloudflare Workers 的应用程序。
超快
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 世界中最快的路由器。它使用在调度之前创建的单个大型正则表达式来匹配路由。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 开箱即用地提供了用于以下方面的中间件和帮助器
- 基本身份验证
- Bearer 身份验证
- 主体限制
- 缓存
- 压缩
- 上下文存储
- Cookie
- CORS
- ETag
- html
- JSX
- JWT 身份验证
- 日志记录器
- 漂亮 JSON
- 安全标头
- SSG
- 流
- GraphQL 服务器
- Firebase 身份验证
- Sentry
- 其他!
例如,使用 Hono 添加 ETag 和请求日志记录只需要几行代码
import { Hono } from 'hono'
import { etag } from 'hono/etag'
import { logger } from 'hono/logger'
const app = new Hono()
app.use(etag(), logger())
查看 有关中间件的更多信息。
开发者体验
Hono 提供了一种令人愉快的“开发者体验”。
通过 Context
对象轻松访问请求/响应。此外,Hono 是用 TypeScript 编写的。Hono 有“类型”。
例如,路径参数将是字面量类型。
此外,验证器和 Hono 客户端 hc
启用了 RPC 模式。在 RPC 模式下,您可以使用您喜欢的验证器,例如 Zod,并轻松地与客户端共享服务器端 API 规范,并构建类型安全的应用程序。
查看 Hono 堆栈。