0

私は Yesod についてすべてを学ぶ使命を帯びてきましたが、ルーティング システムとサブサイトおよびクロスルート リンク全般との関係について (ある程度) 行き詰っています。最初に対処したいことはResourceR、ルート定義と Hamlet リンク全体で見られる " " パターンです。

「タイプ」自体 ( ResourceR) は、Yesod の TH DSL の外部でアドレス指定または参照されることはありません。これは、Yesod リンクを参照する際に Haskell の型安全性を活用するためだけに、実際にはダミー型としてのみ使用されているということですか? 関数getResourceRなどpostResourceRはアプリが機能するために不可欠ですが、それらの定義がボイラープレート アプリ コードのどこで使用されているかは明示されていません。Yesod は単に@{ResourceR}適切な関数への呼び出しを減らすだけですか?

私は自分自身をデータ型として定義すべきだとResourceR常に感じていますが、実際には Yesod によって内部的に生成および縮小されています。

私の質問は、Hamlet と Route コードで参照されている「リソース タイプ」は、Yesod の DSL によって自動的に生成および削減されるのでしょうか?

前もって感謝します!

4

1 に答える 1

1

Yesod は実際、routes ファイル (または quasiquotes セクションの parseRoutes 関数に入力したもの) で見たものを展開し、サーバーに適切な名前の get または post 関数を与えます (リソースの前に「get」または「post」を付けることにより)。名前)。get/post 関数を作成するだけで、フレームワークがルートを使用して関数を呼び出します。パスとリクエスト タイプを指定するだけで済みます。

このようにすべてのパス情報を 1 つの場所に集中させると、個々の要求がどこに行くのかを簡単にデバッグできます (別のスパゲッティ コードがどのようになるかを考えてみてください)。また、強制的な名前の標準により、コードが理解しやすくなり、コード生成によって繰り返しの一部が削除されます (つまり、ドライな原則を順守するのに役立ちます)。

于 2013-11-18T21:57:43.037 に答える