目前我的application.js文件如下所示:
//= require_tree ./vendor
//= require_directory ./lib
我还有针对各个视图的单独JavaScript文件,例如home.js,user.js等。
人们会将这些文件放在application.js中吗?如果是这样,他们如何激活它们?我的大多数JavaScript都是从jQuery ready事件处理程序$(function (){ });
显然,如果它们都在同一个文件中,则不起作用。如果这些文件都在同一个文件中,我怎么能缩小这些文件并访问正确的就绪事件?
非常感谢任何帮助或提示。
答案 0 :(得分:0)
拥有多个jQuery文档就绪处理程序是很好的,因为你不应该关心它们之间的顺序。但是,在尝试附加任何处理程序之前,您需要检查它们所处理的元素是否存在。
例如,在home.js中,您可能会有类似
的内容if ($("#home_div").length) { // do some stuff on the home page }
这样做比分割你的JS更好,只在某些页面上提供一些部分,因为使用编译的方法,你的用户只需要下载一次JS。我认为默认的rails 3.1 config应该缩小并连接你生产中的所有JS,而不是dev。如果您想手动启用它,
config.assets.compress = true # compress js into one file
config.assets.js_compressor = :uglifier # minify the JS (need the uglifier gem)
config.assets.digest = true # append hashes to filenames so you can set far-expiry headers for caching
更多信息,请查看文档http://guides.rubyonrails.org/asset_pipeline.html#customizing-the-pipeline
的“自定义管道部分”和这个相关的问题
How to properly work with jQuery in Rails 3.1 asset pipeline?