簡體   English   中英

我應該使用YUI Compressor還是新的Google Closure編譯器來壓縮我的JavaScript?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM