Hono
Hono - 在日語中意指火焰🔥 - 是一個基於 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 的簡單網頁應用程式框架,沒有前端。但是它在 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 應用程式的示範。
超快速
與其他 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 世界中最快的路由器。它使用在分派之前建立的單個大型 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 有許多中介軟體和輔助工具。這些使「少寫程式碼,多做事情」成為現實。
Hono 開箱即用,提供以下中介軟體和輔助工具
- 基本身份驗證
- Bearer 身份驗證
- Body Limit
- 快取
- 壓縮
- Context 儲存
- Cookie
- CORS
- ETag
- html
- JSX
- JWT 身份驗證
- 記錄器
- Pretty JSON
- 安全標頭
- SSG
- Streaming
- 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 技術堆疊。