我熟悉使用字符串文字和導出以防止Closure重命名變量的概念,但是如何防止Closure使用由其他代碼(我沒有寫入)用作全局變量的變量名稱, ?如何防止Closure Compiler在全局名稱空間中創建特定的變量名稱?
實施例,下面是爲一封閉的成員函數創建的:
function $() {
var a;
if(1 > N) {
return-1
}
a = Math.pow(1 + Q, F);
return .....
}
上方被加載的jQuery時重挫。
我使用的命令行編譯器,這是我的命令行:
Java的罐子compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --formatting = pretty_print --output_wrapper PGS --js common.v2 .0.raw.js --module common_min:1個--js page_code.raw.js --module page_code_min:1:common_min
我以爲output_wrapper
選項用來解決這個問題,但無論是我我誤解了它的目的,或者我濫用了它。
TIA。
謝謝。我誤解了'externs'僅用於防止在被縮小的代碼中重命名對外部庫的函數調用。由於被縮小的代碼不包括對_jQuery_代碼的調用,我沒有看到需要包含外部定義。我也使用** FancyBox **,** HighCharts **及其導出模塊。如果我找不到這些庫(我沒有找到)的'extern'文件,那麼我想我要麼堅持創建我自己的文件,要麼我不應該使用'ADVANCED_OPTIMIZATIONS'選項。正確? – Karl
你是對的。儘管簡單地保留一個符號名稱,但extern可能非常基本。就像'var librarynamespace = {};'很好。不需要完整的定義。 –