コンテンツへスキップ

Hono

Hono - 日本語で炎🔥を意味します - は、Web標準に基づいて構築された、小さく、シンプルで、超高速なWebフレームワークです。Cloudflare Workers、Fastly Compute、Deno、Bun、Vercel、Netlify、AWS Lambda、Lambda@Edge、Node.jsなど、あらゆるJavaScriptランタイムで動作します。

高速なだけでなく。

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サポート。今では「Types」を手に入れました。

ユースケース

Hono は、フロントエンドなしの Express に似たシンプルなWebアプリケーションフレームワークです。しかし、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オープンソースのWebサイトおよびAPI監視プラットフォーム。HonoはAPIサーバーに使用されています
DenoベンチマークDenoV8上に構築されたセキュアなTypeScriptランタイム。Honoはベンチマークに使用されています

そして以下。

もっと見たいですか?本番環境でHonoを使用しているのは誰ですか?を参照してください。

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 プリセットを使用すると、サイズはminify時に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には「Types」があります。

たとえば、パスパラメータはリテラル型になります。

SS

また、ValidatorとHono Client hcはRPCモードを有効にします。RPCモードでは、Zodなどの好きなバリデーターを使用して、サーバー側のAPI仕様をクライアントと簡単に共有し、型安全なアプリケーションを構築できます。

Honoスタックをご覧ください。

MITライセンスの下でリリースされています。