跳至內容

Hono

Hono - 在日語中意指火焰🔥 - 是一個基於 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 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?

專案平台用途?
cdnjsCloudflare Workers一個免費且開放原始碼的 CDN 服務。Hono 用於 API 伺服器
Cloudflare D1Cloudflare Workers無伺服器 SQL 資料庫。Hono 用於內部 API 伺服器
BaseAI本機 AI 伺服器具有記憶體的無伺服器 AI 代理管道。一個用於 Web 的開放原始碼代理 AI 框架。使用 Hono 的 API 伺服器
UnkeyCloudflare Workers一個開放原始碼 API 身份驗證和授權服務。Hono 用於 API 伺服器
OpenStatusBun一個開放原始碼網站和 API 監控平台。Hono 用於 API 伺服器
Deno 效能基準Deno一個基於 V8 建構的安全 TypeScript 運行時環境。Hono 用於效能基準測試

以及以下。

您想看更多嗎?請參閱 誰在生產環境中使用 Hono?

1 分鐘了解 Hono

使用 Hono 建立 Cloudflare Workers 應用程式的示範。

Demo

超快速

與其他 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 開箱即用,提供以下中介軟體和輔助工具

例如,使用 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 物件,可以輕鬆存取請求/回應。此外,Hono 是以 TypeScript 編寫的。Hono 具有「類型」。

例如,路徑參數將是文字類型。

SS

此外,Validator 和 Hono Client hc 啟用 RPC 模式。在 RPC 模式下,您可以使用您最喜歡的驗證器(例如 Zod),並輕鬆與用戶端共用伺服器端 API 規格,並建構類型安全的應用程式。

請參閱Hono 技術堆疊

根據 MIT 許可發布。