RequireJSをRails 3.1アプリケーションで使用する

質問

Rails 3(esp 3.1)アプリケーションでRequireJSを使用した場合、それはどのように機能しますか?私が注意する必要がある設定の秘訣やその他の問題はありますか?

背景

私は、特にJavaScriptコードのために、Rails 3.1でSprocketsベースのAsset PipelineよりRequireJSを使用することを検討しています。私はこの選択のための2つのモチベーターを持っています:

  • JSクライアント側のコードにRequireJSのモジュール管理を活用したいと考えています。
  • 私のJSライブラリコードを他のコンテキストに追随させるプリコンパイルシステムが必要です。私の驚いたことに、Asset Pipelineプリコンパイラは、Railsの一部であり、Sprockets自体の一部ではありません。

すべてのフィードバックは、ありがとう!

25
なぜあなたはSprocketsのものよりもRequireJSのモジュール管理を望んでいるのかについてもっと教えてください。私は、Railsアプリケーションのために同じことをやってみたいと思っています - SprocketsをRequireJSに置き換えてください。
追加された 著者 kangax,
@kangax、Sprocketsは実際にモジュール管理を提供していません。それは、Sprocketsの指示に従ってJavaScriptの束をビルドされたファイルにまとめるだけです。それが起こると、私はRequireJSをRailsに統合するために requirejs-rails の宝石を公開しました。 CoffeeScript変換のためにSprocketsを利用しています。事前処理をサポートして0.5.0リリースに近づいています。
追加された 著者 John Whitley,

1 答え

後世のために、ここで私はこの質問に来ました:

  • RequireJSは、非同期モジュール定義 APIの実装を提供します。 RequireJS 'なぜAMDですか?

  • スプロケットとRails 3 Asset Pipelineは、JavaScript/CoffeeScriptコードのシンプルな構造化を可能にしますが、本当のモジュールサポートを提供しません。たとえば、スプロケットには名前空間の制御はありません。

  • jQuery(1.7以降)、Underscore、Dojoなどの多数の主要ライブラリがAMDのサポートを実装しています。他のいくつかの主要なJSライブラリには、近い将来の期間(例えば、Backbone.js)にAMDのサポートがあるようです。

RequireJSを統合するRailsアプリケーションを作成することは確かに可能です。そのプロセスを簡略化するため、簡単な設定で githubでrequirejs-rails gem を作成しました r.js を介して、AMDベースのコードのアセットパイプライン対応のプリコンパイルを行うことができます。現在のリリースは、

gem install requirejs-rails

48
追加された
@leppert shimの設定を使用して、常に "_"をエクスポートすることができます。
追加された 著者 Chad Johnson,
この宝石をありがとう。できればBackboneを使って、すべての設定方法を示すコードRailsアプリがありますか?私はドキュメントを読んだことがありますが、私はrequire.jsには新しく、javascriptで経験豊富で熟練した人ではありません。
追加された 著者 Leahcim,
次に、requirejs-railsを統合したRails 4アプリケーションの例を示します。 github.com/pboling/require-rails -example
追加された 著者 rubiii,
後世のために、UnderscoreはもはやAMDをサポートしません。しかし、Underscoreのドロップイン代替品であるLodashはそうしています。 lodash.com
追加された 著者 leppert,