web-dev-qa-db-ja.com

JavaScriptを圧縮するには、YUI Compressorまたは新しいGoogle Closureコンパイラを使用する必要がありますか?

YUI Compressorは最小化のためのコンセンサスに最適なツールでしたが、クロージャーの方が優れているようです。

50
Josh Gibson

「どちらがあなたに最適か」現時点での一般的な答えだと思います。YUIはより長く使用可能であるため、間違いなく現在、最良のツールとしてコンセンサスを得ているものです。 Closureは私たちにとって新しいものですが、YUIのようにClosureの豊富な経験はありません。したがって、単にそれが新しいものであるという理由だけで、それを使った人々の経験に基づいてクロージャーを使用する理由について、説得力のある現実世界の議論を見つけられるとは思いません。

クロージャーを使うべきではないと言っているわけではありません...私の言い回しだけですが、多くの人が2を使って比較するまで、これに対する答えはないと思います。

編集:クロージャは改善をもたらすと言って、初期の比較がいくつかあります: 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

27
AdaTheDev

私が見た比較から、ファイルサイズを最小化するという点では、Closureの方が明らかに勝っているようです。この記事では、3つの一般的なJSライブラリ(jQuery、Prototype、MooTools)を使用して、YUI CompressorとClosure Compilerの間の圧縮を比較します。 http://www.bloggingdeveloper.com/post/Closure-Compiler-vs -YUI-Compressor-Comparing-the-Javascript-Compression-Tools.aspx

クロージャーは各テストの前に出てきます。特に、詳細モードでは、「60%近くの圧縮を提供することにより、YUI Compressorよりもコードサイズを約20〜25%最小化できます」。

14
Michael

クロージャは、シンプルモードまたはアドバンスモードで使用できます。シンプルモードは、関数内のローカル変数の名前を変更するだけなので、ほとんどの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サイト で試すことができます。

10
mckoss

jQuery 1.5glifyJS に移動したようです:

さらに、このスイッチにより、Google Closure CompilerからUglifyJSを使用するようになりました。使用中に確かなファイルサイズの改善が見られたため、スイッチに非常に満足しています。

7
Kevin Hakanson

あなたのコード次第だと思います。独自のコードをコンパイルする場合は、Closure Compilerで動作するようにコードにパッチを適用することは価値があると思います初めは少し厄介です)。私はClosure Compilerがすぐにそのような仕事の一番の選択肢になると信じています。それはまた、コードを少し整理して一貫したスタイル(もちろんそれはあなたの好みに依存します、あなたはいくつかの部分を嫌うかもしれません、私は:Pをします)。

他のライブラリに依存している場合、私の意見では、それらがリリースされるまで少し待つ必要がありますClosure Compiler互換バージョン。世の中で最も人気のあるライブラリの場合、それほど時間はかかりません。そして多分あなたはあなたが自分で使う「それほど活発ではない」ライブラリの修正を提供することができます。

ここでは高度なコンパイルモード、シンプルなコンパイルモードについて話しています一部が指摘したように、かなり安全に使用できます。

そして、これは別の意見です- Google Closure?私は感心していません 。少しきつすぎるかもしれませんが、いい読みです。どちらが良いかは時間だけがわかると思います=)

5
Maiku Mori

2012年10月の時点で、YUIコンプレッサーは現在非推奨になっているか、少なくともYUIで使用されなくなるようです: http://www.yuiblog.com/blog/2012/10/16/state-of -yui-compressor /

2
robd

ここでいくつかのテストを行い、各ブラウザで何が良いかを確認できます: http://jsperf.com/closure-vs-yui

1
Erick Ribeiro