Googleの新しくリリースされたClosureコンパイラに対してjQueryをコンパイルした人はいますか?
コードサイズの大幅な節約が報告されています。jQueryをコンパイルした場合のメリットについて知りたいです。
Googleの新しくリリースされたClosureコンパイラに対してjQueryをコンパイルした人はいますか?
コードサイズの大幅な節約が報告されています。jQueryをコンパイルした場合のメリットについて知りたいです。
John Resig は、jQuery 1.4 の nightly をコンパイルしようとしたときに、再帰関数に関するバグを報告しました。そのため、解決すべき問題がいくつかあります。私は、jQuery テストベッドに合格することを確認せずに、Closure Compiler でコンパイルされた jQuery を使用しません。
http://code.google.com/p/closure-compiler/issues/detail?id=1&can=1#c2
jQuery jQuery 1.3.2 で試してみました
jQuery-1.3.2.min.js 57254 Bytes
jQuery closure compiler 49730 Bytes
-----------------------------------
Reduced by 7524 Bytes
Saved 13.31% off the original size
Saved 10.87% off the gzipped size
〜7KBのゲイン
しかし、15個の警告も報告され、まだ機能するかどうかはテストしていません
クロージャ コンパイラは、実際には使用しないコードをすべて排除します。典型的な Web ページでは、jQuery 関数のごく一部しか使用されないため、コードを完全バージョンの jQuery と一緒にコンパイルすると、最大のメリットが得られます。
ADVANCED_OPTIMIZATIONSをオフにした場合:
ADVANCED_OPTIMIZATIONSをオンにすると、変更なしでは機能しません。ADVANCED_OPTIMIZATIONSがオンになっていて、エクスポートするために見つけることができるすべてのものがエクスポートされています...それでも完全には機能せず、コードはすでに最大53466バイトになっています(そして18785 gzipで圧縮されています。これは、ADVANCED_OPTIMIZATIONSがないgzip圧縮されたクロージャーコードよりも多いです)。それは勝利の提案のようには見えません。
jQuery 1.4以降、jQueryリリースのデフォルトのミニファイ手法としてGoogleのClosureCompilerが使用されています。ただし、jQueryはSIMPLE_OPTIMIZATIONS設定のみを使用します。jQueryチームは、ADVANCED_OPTIMIZATIONSをサポートする予定はありません。
好奇心から、YUI と Closure で縮小された最新の Prototype と jQuery ライブラリの SlickSpeed テストをまとめました。ここでテストを実行できます。
他の人が指摘しているように、ADVANCED_OPT でのコンパイルは機能しませんが、誰かが作業を行いたい場合は、結果を SlickSpeed テストに追加します。
私は彼らのオンラインコンパイラを試してみましたが、うまくいきました。
Closure (ADVANCED_OPTIMIZATIONS を使用) を使用して、ホストしている単一ページのサイトの JavaScript コードを圧縮したところ、YUI Compressor よりもサイズが大幅に節約されました。そのため、jQuery ライブラリ全体を使用していないことは確かなので、そのサイトの jQuery を縮小することも検討し始めました。
コンパイラで jQuery を実行するたびに警告が表示され、ほとんどの場合、使用されていないコードの部分が指摘されます。それでも、コンパイルされたコードは機能しません。私が目にする主な問題は、コンパイラによって適切にエクスポートされていないことです。関数を window オブジェクトにアタッチすることで、自分のコードから関数を簡単にエクスポートできましたが、まだ jQuery でこれを行うことはできませんでした。
良いニュースは、John Resig がすでに Closure を実験していることです。近い将来、互換性のある両方の新しいリリースが見られると思います。
Closure は変数を最小化して名前を変更するだけではありませんか? jQuery には既に .min バージョンがあります。クロージャーを使用して再度縮小することは、おそらく最小限の効果であり、潜在的に危険です。
編集:私はちょうどそれをしました。
Compilation was a success!
Original Size: 55.91KB (19.28KB gzipped)
Compiled Size: 54.05KB (18.28KB gzipped)
Saved 3.34% off the original size (5.18% off the gzipped size)
これは、すでに採掘されたバージョンの上にあります。ここにデモがあります: http://closure-compiler.appspot.com/home
jQuery は、拡張モードの Closure Compiler と (まだ) 互換性がありません。互換性を持たせることは非常に良いことであることに同意します。なぜなら、そのメソッドチェーン構文は、実行速度を大幅に向上させるための仮想化のプロトタイプに非常に容易に役立つからです。
実際、一般的な JavaScript ライブラリー (Closure Library 以外) の中で、Closure Advanced モードと互換性があるのは Dojo Toolkit だけです。