Honoを触ってみた
2024-02-25興味があったため、Honoを触ってみた。その時の学習メモ。
箇条書きで雑多に書きます。
https://hono.dev/concepts/motivation
以下メモ
- 思想
- CloudFlare Workersで満足に動かせるアプリを作りたかった。
- RegExpRouterといういかれた速度のRouterだったり、認証ミドルウェアを作ってる友人がいた(それぞれ1名ずつ)
- Web標準に準拠
- 他にも、GraphQLや各種アダプタなど、拡張性が高い
- そして、Hono自体をWeb標準にしたい
- Honoの5種類のルーター
- RegExpRouter
- 正規表現でルーティングを作成するため、コンピュータフレンドリー
- TrieRouter
- トライ構造アルゴリズムに則ったRouter
- 2番目に速い
- SmartRouter
- RegExpRouterで賄えないパターンをサポートするRouter
- LinearRouter
- RegExpRouterはRequest時にルーティングを作るようなアプリ(SPAとか?)では若干遅くなる
- 上記を賄える
- PatternRouter
- 容量の少ないルーティング、小規模レベルならこれでよい
- RegExpRouter
- ミドルウェアとしても使える
- Responseを返却するものをハンドラーと呼ぶ
- 「ミドルウェア」は、ハンドラー実行前にRequestやResponseをいじってくれる
- これはオニオンアーキテクチャっぽいらしい
- 使い方
- 基本的にExpressとかと変わらない
- https://hono.dev/getting-started/basic#return-html
- JSXも行けるらしい
- APP
- 404の制御方法が個人的に好き
- サービスワーカーも使える
- Routing
- RegExpRouter,想像以上に正規表現の書き方だった
- upsert的な処理書きたいときに便利
- 親パスの固定化もできちゃう、ここまで読んだけどRoutingの体験めっちゃ良さそう
- Middleware
- 基本的にExpressの書き方と似てる?
- MiddleWareほどのものがいらないときは、Helper(用意してくれている便利なやつ)で対応
- Zodを用いたバリデーションも可能
- Best Practice
- HonoRequestがパスのパラメーターを参照できなくなる?から、Controller実装はダメ
- 分割したいときは以下を参考にする(要はapp.の形式で作る)