5

Rails 3.1 アプリの JS フレームワークとして dojo-toolkit を使用しようとしていますが、dojo の require 構造をスプロケットの require と coffeescript に組み込むのに苦労しています。dojo はディスク上の JS ファイルを想定しているようですが、coffeescript からオンザフライで作成されていると思います。

2つのrequire-sがどのように共存できるかについて誰かが考えているかどうか疑問に思っています.

4

1 に答える 1

7

最近、レール3.1とアセットパイプラインを備えたdojoをインストールする必要がありました。これを機能させるために私が従った手順は次のとおりです。

1/道場を含める

dojoSDKをvendor/Assets / javascriptsの下に配置して、dojo、dijit、およびdojoxフォルダーを取得します。テンプレートに含めます。

= javascript_include_tag "dojo/dojo", :'data-dojo-config' => %Q(baseUrl: '/assets/dojo/', modulePaths: {modules: '/assets/modules', widgets: '/assets/widgets'})

アセットの先頭の「/」を忘れないでください!

フォールバックでGoogleCDNを使用できます:

script var djConfig = { baseUrl: '/assets/dojo/', modulePaths: {modules: '/assets/modules', widgets: 'widgets'} };
= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js"
script ="typeof(dojo) === \"undefined\" && document.write(unescape('%3Cscript src=\"#{asset_path('dojo/dojo')}\"%3E%3C/script%3E'));".html_safe

最初の行はdjConfigを設定します。2つ目は、実際にはGoogleの道場が必要です。3番目はフォールバックです。


2/ベースファイルを含める

app / Assets / javascripts / application.jsのすべての「require」を削除し、次のようなものを配置します(たとえば)。

dojo.provide("myapp");

3/dojo.requireで遊ぶ

1 /のdjConfigで、modulePathsを設定し、必要に応じてカスタマイズします。私の例では、ファイルを配置できる場所が2つあります。

  • app / Assets / javascripts / modules /
  • app / Assets / javascripts / widgets /

modules / test.jsが必要な場合は、次のようにします。

dojo.require("modules.test");

4/コーヒースクリプトとERBを使用する

Railsのドキュメントで説明されているように、適切な拡張子を追加して、適切なerbを開始するだけです。

お役に立てば幸いです。

于 2011-10-19T19:12:00.277 に答える