2012-04-24 23 views
1
utilities.js: 
function log(message) 
{ 
.... 
} 

module1.js 
YAHOO.util.Event.onDOMReady(function() 
{ 
    log("module1 is loaded"); 
}); 

module2.js 
YAHOO.util.Event.onDOMReady(function() 
{ 
    log("module2 is loaded"); 
}); 

對於頁面請求我會先加載utilities.js然後module1.js和module2.js組織JavaScript文件爲了更好地混淆

現在,當我試圖混淆這些文件中,提及「日誌」在模塊中不會被混淆,因爲它是一個隱含的全局。

我想保持模塊文件分開(儘管服務於同一頁),以提高可讀性和維護。而utilities.js中的函數也可用於其他頁面。

如何更好地組織這些文件以改善混淆?

回答

0

將您的代碼在自執行匿名函數:

(function(){ 
    YAHOO.util.Event.onDOMReady(function() { 
     log("module2 is loaded"); 
    }); 
})(); 

所以,當你的代碼會被混淆全局函數和變量仍然有其原來名。

+0

混淆器在這種情況下如何解決「記錄」? – Schu 2012-04-24 12:51:42

+0

他將搜索您的作用域變量並將其混淆。並沒有混淆全局變量。如果在範圍混淆器外部定義的功能日誌不會觸及它們 – antyrat 2012-04-24 12:53:52

+0

您不能這樣。如果將日誌放入一個不會返回任何內容的匿名函數中,它將只存在於該函數的範圍內。 – 2012-04-24 12:54:36

0

我個人喜歡用RequireJS:http://requirejs.org/

這是加載模塊的框架,你可以返回一個集合或對象使用,並保持各領域所有的模塊。