我正在尝试将dojo-toolkit用作Rails 3.1应用程序上的JS框架,但是我正在努力将dojo require结构与链轮require和coffeescript结合在一起。似乎dojo希望磁盘上有JS文件,但是我想它们是通过coffeescript动态创建的。

想知道是否有人对这两个require-s如何共存的想法。

最佳答案

我最近不得不安装带有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。第二个实际上需要Google提供的dojo。第三是后备。



2 /包含您的基本文件

在您的app / assets / javascripts / application.js中删除所有“ require”,然后放入类似的内容(例如):

dojo.provide("myapp");




3 /玩dojo.require

在1 /中的djConfig中,我设置了modulePaths,将其自定义为所需的内容。以我为例,您可以在其中放置两个文件:


应用/资产/ javascripts /模块/
应用/资产/ javascripts /小部件/


如果我想要求modules / test.js,我只是做:

dojo.require("modules.test");




4 /使用coffeescript和ERB

只需添加正确的扩展名并从erb开始,如Rails documentation中所述。

希望对您有帮助!

07-24 09:43
查看更多