我正在尝试使用dojo-toolkit作为rails 3.1 app上的JS框架,但我正在努力将dojo require结构与sprockets require和coffeescript合并.似乎dojo期望磁盘上的JS文件,但我猜它们是从coffeescript动态创建的.
想知道是否有人知道这两个要求是如何共存的.
解决方法
我最近不得不使用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/',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.第三是后备.
删除app / assets / javascripts / application.js中的所有“require”并放置类似的东西(例如):
dojo.provide("myapp");
3 /与dojo.require一起玩
在1 /的djConfig中,我设置了modulePaths,将它们自定义为你想要的.在我的例子中,你可以将这两个放在你的文件中:
> app / assets / javascripts / modules /
> app / assets / javascripts / widgets /
如果我想要模块/ test.js,我只是这样做:
dojo.require("modules.test");
4 /使用coffeescript和ERB
只需添加正确的扩展名并启动右侧erb,如Rails documentation中所述.
我希望它对你有所帮助!