2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HonoのマージされたPRを読んでいく#1 - #5

2
Last updated at Posted at 2025-11-30

この記事何?

エンジニア歴1年半。業務で利用しているHonoが大好きだが、TSもプログラミング知識も弱々すぎて上手く使いこなせない。速いはずが多分生かせてない。
ちゃんと理解するためにソースコードリーディングしたい。

でも目的なくソースコード眺めても意味ないし……ねむい……
そうだ!PRを全部読めば、変遷やなぜ変更されているかストーリー的に分かるのでは。
と思ったのでチャレンジしてみる。PR2000以上あるので、全部できるかは知らん。
https://github.com/honojs/hono

#1 Create LICENSE

MITライセンスの明記。

#2

なし

#3 Update document

ドキュメントが少し補足されている。

名前が、hono -> Honoになってる。

サンプルコードの追加

const app = new Hono()

app.get('/', () => new Response('Hono!!'))

app.fire()

ファイア🔥!!

調べたら、.fire()今は非推奨の様子。ファイアしたかった。無念。

特徴

- 高速 - ルーターは Trie(トライ)木構造で実装されています
- 軽量 - 標準APIのみを使用しています
- 移植性が高い - 依存パッケージはゼロです
- Cloudflare Workers 向けに最適化 されています

おお、今とスタンス変わってない。Honoの基本思想と言えそう。

トライについてもよく知らないので調べてみる。

なるほど、わからん。
文字列を 1 文字ずつノードとして接続して保存するデータ構造で、検索時間が文字列長に依存し、データ量に依存しないから速いのかな??
細かい仕組みがよくわかんない。とりあえず理解は置いといて次。

Named Parameter、 Regexp、Chained RouteなどのRouteについて追記されている。
これらは今もある。はず。

#4 Fixed tests

テストの軽微な修正

  • Node インスタンス生成位置の変更
  • テストケース追加(Root Node の動作確認)
    • Nodeが / ルートを正しく登録・検索できるかの確認
    • /hello を登録した場合に / が誤ってヒットしないかを確認

#5 Support query and param method on Request

src/hono.js

  • メソッド名の変更
    • matchRoute(method, path) -> match(method, path)
    • handle() → handleEvent()
  • dispatch() メソッドのロジック改善
    • クエリ取得とパラメータ取得を追加
Request → dispatch()
         ├─ URL解析 (new URL(request.url))
         ├─ match(method, path)
         │     └─ Trie木を使って対応ルートを検索
         ├─ 結果(result)をもとに:
         │     ├─ request.query(key) = URL検索パラメータ
         │     └─ request.params(key) = ルートパラメータ
         └─ result.handler(request) 実行

こうぽい。
src/hono.test.js

  • params and queryのテスト追加

今回はここまで。ぜひコメントあればお待ちしています。

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?