39

Googleの新しくリリースされたClosureコンパイラに対してjQueryをコンパイルした人はいますか?

コードサイズの大幅な節約が報告されています。jQueryをコンパイルした場合のメリットについて知りたいです。

4

10 に答える 10

27

John Resig は、jQuery 1.4 の nightly をコンパイルしようとしたときに、再帰関数に関するバグを報告しました。そのため、解決すべき問題がいくつかあります。私は、jQuery テストベッドに合格することを確認せずに、Closure Compiler でコンパイルされた jQuery を使用しません。

http://code.google.com/p/closure-compiler/issues/detail?id=1&can=1#c2

于 2009-11-07T22:50:15.097 に答える
12

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個の警告も報告され、まだ機能するかどうかはテストしていません

于 2009-11-07T03:29:55.410 に答える
7

クロージャ コンパイラは、実際には使用しないコードをすべて排除します。典型的な Web ページでは、jQuery 関数のごく一部しか使用されないため、コードを完全バージョンの jQuery と一緒にコンパイルすると、最大のメリットが得られます。

于 2009-12-02T22:53:49.110 に答える
6

ADVANCED_OPTIMIZATIONSをオフにした場合:

  • jquery-1.3.2.min.js:57254バイト
  • jquery-1.3.2.closure.js 55346バイト(-3.4%)
  • jquery-1.3.2.min.js.gz:19680バイト
  • jquery-1.3.2.closure.js.gz:18666バイト(-5.2%)

ADVANCED_OPTIMIZATIONSをオンにすると、変更なしでは機能しません。ADVANCED_OPTIMIZATIONSがオンになっていて、エクスポートするために見つけることができるすべてのものがエクスポートされています...それでも完全には機能せず、コードはすでに最大53466バイトになっています(そして18785 gzipで圧縮されています。これは、ADVANCED_OPTIMIZATIONSがないgzip圧縮されたクロージャーコードよりも多いです)。それは勝利の提案のようには見えません。

于 2009-11-07T04:21:31.900 に答える
5

jQuery 1.4以降、jQueryリリースのデフォルトのミニファイ手法としてGoogleのClosureCompilerが使用されています。ただし、jQueryはSIMPLE_OPTIMIZATIONS設定のみを使用します。jQueryチームは、ADVANCED_OPTIMIZATIONSをサポートする予定はありません

于 2010-12-01T15:01:40.283 に答える
2

好奇心から、YUI と Closure で縮小された最新の Prototype と jQuery ライブラリの SlickSpeed テストをまとめました。ここでテストを実行できます

他の人が指摘しているように、ADVANCED_OPT でのコンパイルは機能しませんが、誰かが作業を行いたい場合は、結果を SlickSpeed テストに追加します。

于 2009-11-10T06:38:18.213 に答える
1

私は彼らのオンラインコンパイラを試してみましたが、うまくいきました。

于 2009-11-19T09:19:38.853 に答える
1

Closure (ADVANCED_OPTIMIZATIONS を使用) を使用して、ホストしている単一ページのサイトの JavaScript コードを圧縮したところ、YUI Compressor よりもサイズが大幅に節約されました。そのため、jQuery ライブラリ全体を使用していないことは確かなので、そのサイトの jQuery を縮小することも検討し始めました。

コンパイラで jQuery を実行するたびに警告が表示され、ほとんどの場合、使用されていないコードの部分が指摘されます。それでも、コンパイルされたコードは機能しません。私が目にする主な問題は、コンパイラによって適切にエクスポートされていないことです。関数を window オブジェクトにアタッチすることで、自分のコードから関数を簡単にエクスポートできましたが、まだ jQuery でこれを行うことはできませんでした。

良いニュースは、John Resig がすでに Closure を実験していることです。近い将来、互換性のある両方の新しいリリースが見られると思います。

于 2009-12-07T17:03:04.280 に答える
1

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

于 2009-11-07T03:26:22.780 に答える
-1

jQuery は、拡張モードの Closure Compiler と (まだ) 互換性がありません。互換性を持たせることは非常に良いことであることに同意します。なぜなら、そのメソッドチェーン構文は、実行速度を大幅に向上させるための仮想化のプロトタイプに非常に容易に役立つからです。

実際、一般的な JavaScript ライブラリー (Closure Library 以外) の中で、Closure Advanced モードと互換性があるのは Dojo Toolkit だけです。

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

于 2011-03-10T13:13:58.173 に答える