JQuery, скомпилированный с помощью Google Closure Compiler

Кто-нибудь скомпилировал jQuery против недавно выпущенного Google Closure компилятора?

Сообщалось о большой экономии в размере кода. Мне любопытно, в чем преимущество, если jQuery был скомпилирован с ним.

Ответ 1

Джон Ресиг сообщил об ошибке в рекурсивных функциях, когда он попытался скомпилировать новинку jQuery 1.4, поэтому есть несколько перегибов, которые будут разработаны. Я бы не использовал jQuery, скомпилированный с Closure Compiler, не убедившись, что он проходит тестовый стенд jQuery.

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

Ответ 2

Я попытался с 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

Прибыль ~ 7 КБ

Но он также сообщает о 15 предупреждениях, и я не тестировал, работает ли он еще

Ответ 3

С отключенными ADVANCED_OPTIMIZATION:

  • jquery-1.3.2.min.js: 57254 bytes
  • jquery-1.3.2.closure.js 55346 bytes (-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 gzipped, что больше, чем сжатый код без ADVANCED_OPTIMIZATIONS), поэтому это не похоже на выигрышное предложение.

Ответ 4

Компилятор замыкания исключает любой код, который вы фактически не используете. Типичная веб-страница будет использовать только небольшую часть функций jQuery, поэтому наибольшую выгоду вы получите от компиляции кода вместе с полной версией jQuery.

Ответ 5

Как и в jQuery 1.4, Google Closure Compiler используется в качестве метода майнинга по умолчанию для выпусков jQuery. Однако jQuery использует только параметры SIMPLE_OPTIMIZATIONS. Команда jQuery не планирует поддерживать ADVANCED_OPTIMIZATIONS.

Ответ 6

Из любопытства я собрал тест SlickSpeed ​​из последних прототипов и jQuery-библиотек, сжатых с помощью YUI и Closure. Здесь вы можете запустить тесты.

Как отмечали другие, компиляция с ADVANCED_OPT не работает, но если кто-то хочет выполнить эту работу, я с удовольствием добавлю результаты в тест SlickSpeed.

Ответ 7

Не закрывает ли просто минимизировать и переименовывает vars? 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

Ответ 8

Я использовал Closure (с ADVANCED_OPTIMIZATIONS), чтобы сжать код javascript для сайта с одной страницей, который я размещаю, и увидел значительную экономию по сравнению с YUI Compressor. Поэтому я начал изучать сжатие jQuery для этого сайта, так как он, конечно же, не использует библиотеку jQuery для entier.

Я получаю предупреждения каждый раз, когда я запускаю jQuery через компилятор, в основном указывая части кода, которые не используются. Даже при этом скомпилированный код не работает. Основная проблема, которую я вижу, заключается в том, что компилятор не экспортирует данные должным образом. Я смог легко экспортировать функции из своего собственного кода, присоединив их к объекту window, но я еще не смог это сделать с помощью jQuery.

Хорошей новостью является то, что Джон Ресиг уже экспериментирует с Closure. Я подозреваю, что в ближайшем будущем мы увидим новые версии совместимых.

Ответ 10

jQuery не совместим (пока) с компилятором Closure в расширенном режиме. Я согласен, что было бы очень удобно сделать его совместимым, потому что его синтаксис с привязкой к методу очень легко дает прототип виртуализации для значительно улучшенной скорости выполнения.

Фактически, среди популярных библиотек JavaScript (кроме библиотеки Closure), только Dojo Toolkit совместим с режимом Closure Advanced.

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