2012-04-24 46 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 

即:在開發和生產