Hono
Hono - 日本語で炎🔥を意味します - は、Web標準に基づいて構築された、小さく、シンプルで、超高速なWebフレームワークです。Cloudflare Workers、Fastly Compute、Deno、Bun、Vercel、Netlify、AWS Lambda、Lambda@Edge、Node.jsなど、あらゆるJavaScriptランタイムで動作します。
高速なだけでなく。
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サポート。今では「Types」を手に入れました。
ユースケース
Hono は、フロントエンドなしの Express に似たシンプルなWebアプリケーションフレームワークです。しかし、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 | オープンソースのWebサイトおよびAPI監視プラットフォーム。HonoはAPIサーバーに使用されています。 |
Denoベンチマーク | Deno | V8上に構築されたセキュアなTypeScriptランタイム。Honoはベンチマークに使用されています。 |
そして以下。
- Drivly - Cloudflare Workers
- repeat.dev - Cloudflare Workers
もっと見たいですか?本番環境でHonoを使用しているのは誰ですか?を参照してください。
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
プリセットを使用すると、サイズは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は、すぐに使えるミドルウェアとヘルパーを提供します。
- Basic認証
- Bearer認証
- ボディ制限
- キャッシュ
- 圧縮
- コンテキストストレージ
- Cookie
- CORS
- ETag
- html
- JSX
- JWT認証
- ロガー
- Pretty 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には「Types」があります。
たとえば、パスパラメータはリテラル型になります。
また、ValidatorとHono Client hc
はRPCモードを有効にします。RPCモードでは、Zodなどの好きなバリデーターを使用して、サーバー側のAPI仕様をクライアントと簡単に共有し、型安全なアプリケーションを構築できます。
Honoスタックをご覧ください。