2013-02-15 18 views
13

Ruby on Rails 3.2でリッチクライアントサイドWebアプリケーションを開始します。私はRequireJSを使用しようとしましたが、Asset Pipelineと衝突するようです。私が知る限り、後者の基本的なことは、JavaScriptファイルを非同期的に読み込むこととはあまりよく似ていないように、従属資産を連結し、それらを最小化して圧縮することです。Rails 3.2資産パイプラインとRequireJS

一見すると、アセットパイプラインのパフォーマンスははるかに優れているようです。ただし、RequireJSを使用すると、JavaScriptコードをモジュールで整理して、その依存関係を再利用しやすくすることができます。

両方を組み合わせる方法はありますか?そうでない場合は、どちらを選択しますか?

+0

jsモジュールまたはサーバー側のRequireJS - ブラウザ内での使用の目的は何ですか? –

+0

それはブラウザで使用されるでしょう – davids

+0

それはうまくいくでしょう。 –

答えて

4

RequireJSライブラリをダウンロードしてvendor/assets/javascriptsに送信することをお勧めします。次に、あなたのapplication.jsファイル内:

//= require require 

(?面白い、はい)、それは十分なはずです。

これは、アセットパイプラインとモジュール式jsライブラリを組み合わせる最も簡単な方法です。この特定のライブラリが必要とする追加の設定についてはわかりませんが、同様のことを説明しているthis Railscastをご覧ください。あなたはこの宝石でhttps://github.com/jwhitley/requirejs-rails/

を見てしたい場合があります

+0

これは問題なく動作しますが、なぜパイプラインを無効にしないのですか? – davids

+0

何かがうまくいけばそれはそのまま維持するべきだと思います。何がパイプラインなしであろうか:非圧縮jsは前後に... –

+1

しかし、私のポイントは、非同期に読み込まれたスクリプトは圧縮されないだろうか?彼らはマニフェストに含まれません – davids

7

はあなたが望むものをやっているようだ - まだアセットパイプラインの一部を利用しながら、クライアント側のロードにrequirejsを使用することです。

大部分のケースでは、資産パイプラインが1つの縮小されたjsリソースをロードするので、資産パイプラインがはるかに高速になると推測されます。依存関係の管理はそれほど良いものではないので、アプリに非常に依存します。

+1

完全にビルドプロセス/アプリケーションに依存します。 r.jsを使用して、1つのファイルにまとめて、またはAMDを利用して、オンデマンドでロードするパッケージ、または後で使用する遅延ロードパッケージを作成できます。 – kmiyashiro

関連する問題