web-dev-qa-db-ja.com

ビューごとのJavaScriptファイルRails

「邪魔にならないJavaScript」の推奨事項に従って、JavaScriptロジックを
別々のファイル。しかし、私はそれらを整理する方法がわかりません。

したほうがいい:

  1. すべてのアプリケーションjavascriptをApplication.jsファイルに投げて、レイアウトページで読み込みますか?これは単純なアプローチですが、私はApplication.jsが肥大化することになります。一部のユーザーは2、3ページのみにアクセスしたい場合がありますが、このファイル全体がプリロードされるため、良くありません。
  2. または、ビューごとに個別のjavaScriptファイルを作成し、独立してロードする必要がありますか?これにより、一連の質問が作成されます。各jsファイルを対応するビューにリンクする方法は?
    ありがとう。
54
Valentin

毎回application.jsにメインJavaScriptをロードします。次に、さまざまなニーズに合わせてファイルを作成します。 form.jsファイル、myfancypart.jsファイルなどを作成します。それらをapplication.html.erbレイアウトにロードしないでください。必要なときに動的にロードします。

application.html.erb:

<%= javascript_include_tag "application" %>
<%= yield :javascript_includes %>

view.html.erbの上部:

<% content_for :javascript_includes do %>
  <%= javascript_include_tag "forms.js" %>
<% end %>

Content_forブロック内のすべてがyield:javascript_includesでロードされます。

111

すべてを1つのファイルに入れて、それを縮小してgzipすることができます。クライアントは、その後のすべてのリクエストでキャッシュされるため、一度ダウンロードするだけで済みます。

あなたが興味を引くかもしれないもう一つは、gemを使用してインストールできるjavascript依存関係マネージャーであるスプロケットです。スプロケットの詳細については、Webサイト( http://getsprockets.org/ )またはgithubページ( https://github.com/Rails/sprockets から入手できます。 =)。大きなjavascriptアプリケーションの作成がはるかに管理しやすくなります。

12
jonnii

これは、Rails 3.1およびアセットパイプライン!!!

あなたが示すように、別々のファイルが最適です。それらをすべて参照してリンクする方法に関する問題は、Rails 3.1でなくなります。これは、すべてをプロダクション用の単一ファイルにコンパイルすることを目的としています。

5
Michael Durrant

Jammitを使用してcssおよびjavascriptsファイルを含めることができます

詳細: http://documentcloud.github.com/jammit/

使用する:

ステップ1:

Asset.ymlにjsファイルを追加します(以下のコードを参照)

javaScript:

footer:

- app/javascripts/lib/*.js
- app/javascripts/jquery-plugins/*.js
- app/javascripts/custom/*.js
- app/javascripts/application.js

ヘッダ:

- app/javascripts/core/*.js
- app/javascripts/head/*.js

ステップ2:

アプリケーションレイアウトに簡単なコードを追加します。

<%= include_javascripts :header %>
<%= include_javascripts :footer %>
2
Omer Aslam