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 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?

ProjectPlatformWhat for?
cdnjsCloudflare WorkersA free and open-source CDN service. Hono is used for the api server.
Cloudflare D1Cloudflare WorkersServerless SQL databases. Hono is used for the internal api server.
UnkeyCloudflare WorkersAn open-source API authentication and authorization. Hono is used for the api server.
OpenStatusBunAn open-source website & API monitoring platform. Hono is used for the api server.
Deno BenchmarksDenoA secure TypeScript runtime built on V8. Hono is used for benchmarking.
Deno DocsDenoAn official Deno documentation site. Hono is used for the web server.

以及以下公司。

Do you want to see more? See Who is using Hono in production?.

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 世界中最快的路由器。它使用在調度之前創建的單個大型正則表達式來匹配路由。使用 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 Stacks

Released under the MIT License.