3

Rails javascripts ディレクトリにいくつかの javascript (コーヒー スクリプト) ファイルがあります。コードは論理的に異なるファイルに分割されます。ただし、各ファイルは で始まり$(document).ready ->、一部のファイルは共通のヘルパー関数を共有しています。

ヘルパー関数を分解する最良の方法は何ですか? それらをすべて、以前にapplication.jsに含まれている他のファイルに入れる必要がありますか?

また、私のようにコードを分割するのは普通$(document).ready ->ですか? これは、関連するかどうかに関係なく、すべてのコードがすべてのページで呼び出されることを意味しませんか? この組織に代わるものはありますか?

この質問がRailsに固有のものなのか、JavaScriptやjQuery全般に関連するものなのかはわかりません。

4

1 に答える 1

2

これはRailsの質問であり、良い質問だと思います。

「グローバル」なものが入る Rails の通常のパラダイムはapplication.*、application.js が実際には共通ファイルではなくマニフェストとして機能するため、アセット パイプラインで少し混乱しています。もちろん、そこに何かを追加application.js.coffeeしたり、共通コード用に を作成したりすることもできます。common.js.coffee(別のケースでは )というファイルを作成することにしました。この場合、このファイルはディレクティブshared.js.coffeeによって自動的に処理されます。require_tree .

(@jonathan-tran からのコメントに基づいて更新) 場合によっては、すべてのページでドキュメントに対して呼び出されるメソッドが必要な場合があります。たとえば、これを使用して、任意のビューの任意のフィールドで日付ピッカーを使用できるようにしました。代わりにメソッド (実際にはグローバル関数) を呼び出し可能にしたい場合は、windowオブジェクトにアタッチするなどして、coffeescript 関数を変数にエクスポートする必要があります。共有ファイルで両方を実行できます。

ジェネレーターを使用すると、すべてのコントローラーのファイルが作成されることは事実です。特殊なコードがなければ、$(document).ready ->アセットがコンパイルされるときに一連の冗長なステートメントが発生します。なので、使わないものは捨てましょう。しかし、ページに固有の機能を分離するパターンに従うことは、私にとっては理にかなっており、うまく機能します。何かを見つけるためにどこを探すべきかを知っており、プロジェクトが成長するにつれて、それは非常に価値があります.

そして、私が Rails で学んだもう 1 つのルールは、流れに従うことです。それがRailsのやり方なら、それはおそらく良い方法です。彼らは確かにこれらのことについて考えています。機能するものを修正しないでください:-)

于 2012-11-28T02:17:12.317 に答える