LoginSignup
3
0

Honoを試してみた

Posted at

先日、X(旧:Twitter)で知ったHonoを早速試してみました。
まだ2年経っていないにも関わらず、GitHubのスターが12kを超えていたりとかなり良さそうでした。

ちなみに、Honoとは炎のことだそうです(開発者は日本人らしい)。
名前の由来を知りたい方は、是非ドキュメントのコンセプトのところを読んでみてください。

感想

書き方は、ほぼExpressと同じ様に感じる。
将来的にはNestJSから乗り換えたいと思った。

主な理由としては、

  • TypeScriptだけでAPIのI/F情報を共有可能 (tRPCなどが不要)
  • Swaggerにも対応可能
  • ルーターの設計が良いためファイル分割しやすい
  • 謳い文句通り、高速に動作する
  • 様々なプラットフォーム向けのテンプレート生成機能が用意されている
  • ドキュメントが読みやすく、主流のライブラリでの実装方法が記載されている

デメリットを探す方が難しいくらい良くできている...
難癖レベルでいうなら、DartやJavaに型情報を提供してくれると助かる!!(OpenAPIでやれ)

T3Stackでの開発に差し込んだりもできると思うので、是非流行るといいなぁと思った日曜日の午後でした。

書き方

ここに書くより、ドキュメントを見てもらった方が圧倒的にわかりやすいので割愛。
FastAPIもですが、最近のWebFrameworkはドキュメントが読みやすくて本当に助かる...

少しハマったところ

ドキュメントに注意として書かれているけれど、実際にハマるまでよくわからなかった部分。

ルートを定義する際、以下のように分けて書きたくなるところですが...

const app = new Hono();
app.route("/users", usersAPI);
app.route("/posts", postsAPI);

export type AppType = typeof app; 

このように書くと、Client側の静的解析時にエラーが表示されます。

そのため、以下のように書く必要があります。

const app = new Hono()
    .route("/users", usersAPI)
    .route("/posts", postsAPI);
    
export type AppType = typeof app;

TypeScriptの仕様で考えてみれば、そりゃそうですよね。
型レベルのコードなども見ましたが、超絶複雑だったため、開いた後にそっと閉じました。


是非流行ってほしい

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0