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 是一個類似於 Express 的簡單 Web 應用程式框架,但沒有前端。
但它運行在 CDN 邊緣,並允許您結合中間件構建更大的應用程式。
這裡有一些用例範例。
- 構建 Web API
- 後端伺服器代理
- CDN 前端
- 邊緣應用程式
- 庫的基礎伺服器
- 全棧應用程式
誰在使用 Hono?
Project | Platform | What for? |
---|---|---|
cdnjs | Cloudflare Workers | A free and open-source CDN service. Hono is used for the api server. |
Cloudflare D1 | Cloudflare Workers | Serverless SQL databases. Hono is used for the internal api server. |
Unkey | Cloudflare Workers | An open-source API authentication and authorization. Hono is used for the api server. |
OpenStatus | Bun | An open-source website & API monitoring platform. Hono is used for the api server. |
Deno Benchmarks | Deno | A secure TypeScript runtime built on V8. Hono is used for benchmarking. |
Deno Docs | Deno | An official Deno documentation site. Hono is used for the web server. |
以及以下公司。
- Drivly - Cloudflare Workers
- repeat.dev - Cloudflare Workers
Do you want to see more? See Who is using Hono in production?.
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 認證
- Body 限制
- 快取
- 壓縮
- 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 有「類型」。
例如,路徑參數將是文字類型。
並且,Validator 和 Hono Client hc
啟用 RPC 模式。在 RPC 模式中,
您可以使用您喜愛的驗證器,如 Zod,並輕鬆與客戶端共享服務器端 API 規範,構建類型安全的應用程式。
參見 Hono Stacks。