[英]Should I use the YUI Compressor or the new Google Closure compiler to compress my JavaScript?
YUI Compressor是最小化的最佳工具,但Closure似乎可能更好。
“無論你最適合自己”,我認為目前的答案是一般性的 - YUI已經有了更長的時間,所以毫無疑問,目前已經達成共識的是最好的工具。 雖然Closure對我們來說是新的 - 因此沒有像YUI那樣豐富的Closure經驗。 因此,我不認為你會發現一個令人信服的真實世界論點,為什么要根據人們使用它的經驗來使用Closure只是因為它是新的。
這並不是說你不應該使用Closure ....只是我的回答說,我不認為有一個答案可用,直到許多人使用2並比較它們。
編輯:有幾個早期的比較,說Closure確實有所改進: http : //blog.feedly.com/2009/11/06/google-closure-vs-yui-min/
http://news.ycombinator.com/item?id=924426
進一步編輯:值得關注Closure的問題列表: http : //code.google.com/p/closure-compiler/issues/list
從我看到的比較中,Closure似乎是最小化文件大小的明顯贏家。 本文使用三個流行的JS庫(jQuery,Prototype,MooTools)來比較YUI Compressor和Closure Compiler之間的壓縮: http : //www.bloggingdeveloper.com/post/Closure-Compiler-vs-YUI-Compressor-Comparing-the- Javascript的壓縮,Tools.aspx
Closure在每次測試中都排在前面,特別是在高級模式下,它通過提供近60%的壓縮來“最小化代碼大小比YUI Compressor大20-25%”。
閉包可以在簡單模式或高級模式下使用。 對於大多數JavaScript代碼,簡單模式是相當安全的,因為它只重命名函數中的局部變量以進一步壓縮。
高級模式更具侵略性。 如果它可以確定它們返回沒有副作用的簡單值,它將重命名對象文字中的鍵和內聯函數調用。
例如:
function Foo()
{
return "hello";
}
alert(Foo());
被翻譯成:
alert("hello");
這段代碼:
var o = {First: "Mike", Last: "Koss"};
alert(o);
被翻譯成:
alert({a:"Mike",b:"Koss"});
您可以通過引用如下名稱來阻止高級模式更改對象文字中的鍵值:
{'First': "Mike", 'Last': "Koss"}
您可以在Google的交互式Closure Compiler網站上試用這些和其他示例。
看起來jQuery 1.5剛剛轉移到UglifyJS :
此外,通過此切換,我們已經開始使用Google Closure Compiler中的UglifyJS。 我們在使用它時看到了一些可靠的文件大小改進,所以我們對交換機非常滿意。
我認為這取決於你的代碼。 如果你想編譯自己的代碼,那么我認為修補代碼是值得的,這樣它就適用於Closure Compiler (有些事情在開始時看起來有點尷尬)。 我相信Closure Compiler很快就會成為這類工作的首選,它也會讓你稍微整理你的代碼並保持一致的風格(當然這取決於你的喜好,你可能討厭某些部分,我這樣做:P) 。
如果您依賴其他庫,那么在我看來,您應該等待一段時間,直到它們發布Closure Compiler兼容版本。 大多數受歡迎的圖書館都不應該花費太多時間。 也許你可以為你自己使用的那些“不那么活躍”的庫提供修復。
我在這里談論高級編譯模式,正如一些人指出的那樣使用簡單編譯模式是相當安全的。
這是一個不同的意見 - 谷歌關閉? 我沒有留下深刻的印象 。 它可能有點過於苛刻,但讀起來不錯。 我想只有時間會告訴哪一個更好=)
截至2012年10月,YUI壓縮器看起來已被棄用,或者至少不再用於YUI: http : //www.yuiblog.com/blog/2012/10/16/state-of-yui-compressor /
您可以在此處進行一些測試,並查看每個瀏覽器中哪些更好: http : //jsperf.com/closure-vs-yui
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.