2012-04-24 31 views
2

我有一个清单文件partials.js其中包含此:总结了几个资产在JavaScript关闭需要

//= require_tree ./partials 

然后在./partials/每个咖啡文件包含此:

$ -> 
    # Rest of the code 

是它可能在清单中有这样的东西:

$(function() { 
//= require_tree ./partials 
}); 

并删除$ ->打包在单个文件中?

(这实际上并不在目前工作中的代码被推向下方,与所需的js以上。)

回答

4

我最近遇到了同样的问题,我最后做的是:

服用您的清单例如:

$(function() { 
    //= require_tree ./partials 
}); 

我们可以将它指向清单看起来像这样:

//= require ./head 
//= require_tree ./partials 
//= require ./tail 

然后我们做head.js

$(function(){ //need line to end with semicolon to trick preprocessor; 

,然后我们做tail.js

}); 

诀窍是结束head.js局部有评论分号。其他明智的预处理程序会尝试注入分号打破了脚本制作someothing这样

$(function() { 
; 
    //rest of your code here 
}); 
+0

这进近的缺点作品oach是你不能真正在非压缩模式下使用你的JS。在开发过程中,Rails会单独包含您的文件,因此您的head.js和tail.js会以单独的文件形式出现(有错误)。 – SubmittedDenied 2012-10-16 18:21:33

+1

作为随访到我的评论,我通过使'head.js' ERB模板('head.js.erb'),并使用Rails环境来决定是否要渲染功能头尾解决了这个问题。 – SubmittedDenied 2012-10-17 17:27:14

0

另一种方法是创建一个load_my_asset.js.erb文件:

function loadMyAsset() { 
    <%= Rails.application.assets.find_asset('path/to/asset').source %> 
}; 

和application.js中

//= require load_my_asset 

即:在开发和生产