TL;DR
Web 標準の API の上に作られた、小さく高速な Web フレームワーク。名前は日本語の「炎」に由来する。Cloudflare Workers、Deno、Bun、AWS Lambda、Node.js など、多くのランタイムで同じコードが動く。
なぜ必要か
ランタイム固有の API ではなく Web 標準の API を使うので、同じアプリケーションを複数のプラットフォームで動かせる。Node.js ではアダプタを通して動く。
仕組み
- 高速:
RegExpRouterは線形のループを使わずにルートを照合する - 軽量:
hono/tinyのプリセットは 14 kB 未満で、依存パッケージがない - 機能がそろっている: 認証、CORS、圧縮、ログ、JWT などのミドルウェアとヘルパーが組み込まれている
- 開発体験: TypeScript で書かれていて、パスパラメータにリテラル型が付く。Validator と Hono Client(
hc)を使うと、API の仕様をクライアントと共有する RPC モードで、型安全なアプリケーションを作れる
Web API、バックエンドサーバのプロキシ、CDN のフロント、エッジのアプリケーション、フルスタックのアプリケーションなどに使える。Express に似ているが、フロントエンドの層は持たない。
例
npm create hono@latest でプロジェクトを作れる。
import { Hono } from "hono"
const app = new Hono()
app.get("/", (c) => c.text("Hono!"))
export default appbhvr は Bun、Hono、Vite、React を組み合わせた構成である。Pylon は、内部の Web フレームワークに Hono を使っている。