如何使用带有rails 3.1资产管道和coffeescript的dojo工具包?

时间:2011-09-10 08:45:30

标签: dojo ruby-on-rails-3.1 asset-pipeline

我正在尝试使用dojo-toolkit作为rails 3.1 app上的JS框架,但我正在努力将dojo require结构与sprockets require和coffeescript合并。似乎dojo期望磁盘上的JS文件,但我猜它们是从coffeescript动态创建的。

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

1 个答案:

答案 0 :(得分: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 with a fallback

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 /包含您的基本文件

删除app / assets / javascripts / application.js中的所有“require”并输入类似的东西(例如):

dojo.provide("myapp");

3 /使用dojo.require

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

  • 应用程序/资产/ Javascript角/模块/
  • 应用程序/资产/ Javascript角/部件/

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

dojo.require("modules.test");

4 /使用coffeescript和ERB

只需添加正确的扩展名并启动右侧erb,如Rails documentation中所述。

我希望它可以帮到你!