-1

私は現在、両方rails 2を使用していますrails 3

ドキュメントによると、すべてのページのすべてのスタイルが 1 つのファイルにコンパイルされます。

たとえば、新しい Rails アプリケーションには、次の行を含むデフォルトの app/assets/javascripts/application.js ファイルが含まれています。

// ...
//= require jquery
//= require jquery_ujs
//= require_tree .

Railsがこれを処理する方法に興味があります。すべてのスタイルを 1 つのファイルに書き込むにはどうすればよいですか。ページごとに行うのですか、それとも個別のファイルでスタイルを作成するのですか? レール 2 とレール 3 のアプローチの違いは何ですか?

4

1 に答える 1

1

Rails 3 (正確には .1) は、アセットのパイプラインを提供してくれました。アセット パイプラインは、ご覧のように application.js と application.css を使用します。

アセット パイプラインが行うことは、さまざまな JavaScript ファイルをすべて取り出して、1 つの大きなファイル (通常は application.js) にパッケージ化することです。

ここでの考え方は、あなたが言ったように、コントローラーごとに1つのファイルをJavaScriptで書くことができ、アセットパイプラインは後ですべてをまとめて1つの大きなファイルとして提供するということです。これはパフォーマンスと開発者にとって良いことです。(含まれるファイルが小さいほど、推論と保守が容易になります)。

アセット パイプラインには、いくつかの規則も追加されています。javascript はapp/assets/javascripts(および他のいくつかの定義済みの場所にもあると思います)、通常はコントローラーごとに 1 つのファイルです (ただし、複数のファイルを持つこともできます!)。 Javascript を出力します。( Coffeescriptはそのような言語の例です。Coffeescript は Javascript ではありませんが、Coffeescript コンパイラは Javascript を出力します)。

アセット パイプラインは、Rails アプリに構造をもたらします。通常、私がプロジェクトに参加している場合、3 つの場所のいずれかに JavaScript を配置します。app/assets/javascript自分のアプリ コードlib/assets/javascript用、さまざまなプロジェクトで共有する可能性のある一般的なユーティリティvendor/assets/javascript用、オープン ソース コミュニティの jQuery や Javascript ライブラリなど用です。それは私のものではありません。

以前、Rails 2 では、すべての Javascript が にありましたpublic/javascripts/。そして、私はすべてを意味します: 独自のロジックを含む可能性のある JavaScript ファイル、巨大になる可能性がある (そして開発者が推論するのが難しい) ファイル。新しい jQuery コールバックが必要になるたびに、public/javascripts/application.js. いつか抽出したい Javascript と混合されたベンダー コードと混合されたユーティリティ モジュールを持つことができます。DHH の言葉を借りれば、それはガラクタの引き出しでした。

アセット パイプラインは、クライアント エンドでのダウンロードが高速になるように、場所、コントローラーごとに 1 つのファイル、Javascript のパッケージ化/最適化の規則を提供します。

要約すると、Rails scaffolding コマンドはapp/assets/javascripts/your_controller.js.coffee. このファイルでは、そのコントローラーによって提供されるビューに関連する Javascript を追加する必要があります。これはベスト プラクティスであり、良いアイデアです。

すべての Javascript コードは、最終的にコンピューターによって 1 つの大きなファイルにコンパイルされ、この抽象化が漏れることがあることに注意してください。(たとえば、2 つの異なる JavaScript ファイルが、2 つの異なるイベントを同じ Javascript ID にバインドするのはまったく偶然です)。これらの漏れやすい抽象化が、資産パイプラインに多くの鋭いエッジがあり、SO に関する多くの資産パイプラインの質問がある理由です。

于 2013-04-24T13:41:02.323 に答える