我正在尝试将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中所述。
希望对您有帮助!