1

ここで提案されているように、Javascript テンプレートを含めるために public フォルダーに重複したディレクトリ構造を持つことは本当に好きではありません。私はプロジェクトに飛び込もうとしています。私のすべての JS ビューを他のビューに入れることから私を説得できる人は誰でも、そうしない理由を教えてください。私の考え:

Backbone、Jammit テンプレート、またはその他の Javascript を使用してデータのビューを作成する場合、そのコードは理想的には /app/views/[object] ディレクトリに置くべきではありませんか? データを表す方法が複数あるアプリケーションを設計している場合、それらのビューをすべて同じ場所に置くべきではないでしょうか?

もちろん、ルートを設定して Rails にファイルを提供させるのは意味がありませんが、Jammit/Closure/別の JS 圧縮ツールを使用している場合は、ディレクトリ構造と JS の間に処理レイヤーを既に追加しています。クライアントに送信します。それは、コードの編成/保守にとって最も意味のある場所にテンプレートを配置できるということではないでしょうか?

ありがとう。

4

1 に答える 1

1

.jsファイルを入れないことが推奨される理由app/views/[object]は、それらがRailsアプリケーションの一部ではないためです。これらは実際にはBackboneまたはJammitアプリケーション/フレームワークの一部であるため、appディレクトリには属していません。ファイルが.js.erbファイルの場合、それらはappディレクトリにあるはずですが、そうではないため、public/javascriptsディレクトリに属しています。

これを阻止する人は誰もいませんが、.erbテンプレートファイルではないため、実際にはアプリディレクトリに属していません。それらはパブリック.jsファイルです。それらがコアRailsアプリの一部ではない理由は、それらが.erbで終わっておらず、コントローラーや画像やcssファイルなどのrubyクラスに関係なく、独自に機能するためです。

それらが/app/ viewsディレクトリにある場合は、Railsを介して提供する必要があることに注意してください。つまり、コントローラーサーバーを用意する必要があります。これにより、サーバーがさらに複雑になり、負担がかかります。さらに、コントローラーからビューにルビーデータを渡す必要がない場合は、静的データを提供するだけの非常に基本的で無意味なコントローラーが必要になります。また、これらのコントローラーを介して提供できるように、ファイルの名前を.js.erbに変更する必要があります。ファイルがパブリックディレクトリから直接提供される場合、これは必要ないため、はるかに簡単です。

あるディレクトリが別のディレクトリをミラーリングすることに何の問題もありません。これは、たとえばRSpec仕様/モデル、仕様/ビュー、仕様/コントローラでよく発生します。

于 2011-04-06T20:20:24.273 に答える