5

我正在尝试将 dojo-toolkit 用作 rails 3.1 应用程序上的 JS 框架,但我正在努力将 dojo 要求结构与 sprockets 要求和咖啡脚本结合起来。似乎 dojo 需要磁盘上的 JS 文件,但我猜它们是从 coffeescript 动态创建的。

想知道是否有人知道这两个需求如何共存。

4

1 回答 1

7

我最近不得不使用 rails 3.1 和资产管道安装 dojo。以下是我为其工作所遵循的步骤:

1/ 包括道场

将 dojo SDK 放在 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'})

不要忘记资产的前导“/”!

您可以将Google CDN 与后备一起使用

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。第二个实际上需要来自 Google 的 dojo。三是后退。


2/ 包含你的基础文件

删除您的 app/assets/javascripts/application.js 中的所有“要求”并放置类似的内容(例如):

dojo.provide("myapp");

3/ 玩 dojo.require

在 1/ 中的 djConfig 中,我设置了 modulePaths,将它们自定义为您想要的。在我的示例中,您将拥有这两个可以放置文件的位置:

  • 应用程序/资产/javascripts/模块/
  • 应用程序/资产/javascripts/小部件/

如果我想需要模块/test.js,我只是这样做:

dojo.require("modules.test");

4/ 使用coffeescript和ERB

只需添加正确的扩展并启动正确的 erb,如Rails 文档中所述。

我希望它对你有帮助!

于 2011-10-19T19:12:00.277 回答