Вопрос по jquery, minify, google-closure-compiler, javascript, google-closure – jQuery скомпилирован с помощью Google Closure Compiler

38

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

Сообщалось об огромной экономии в размере кода. Я'Мне интересно, какая польза от этого, если jQuery был скомпилирован с ним.

Думаю яЯ подожду, пока Ресиг и команда не выпустят новую -мин или специальную закрытую версию. Я бы нене хочу сжимать библиотеку, выяснить конкретные особенности нене работает или нет работает как положено. Tom
Мой первый (и единственный) отрицательный голос. Вопрос не заслуживает голосования, если ФП не примет ответ (или, по крайней мере, укажите, чтонедопустимо о предложенных ответах). Частью хорошего вопроса является знание принятого решения. Karl

Ваш Ответ

10   ответов
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), поэтому он нене похоже на выигрышное предложение.

Меньший размер файла часто приводит (но не всегда) к более быстрому коду. Удаление и вставка мертвого кода служит обеим целям. Blaise
@ Кекоа, из чего ямы читалионлайн И вРаспечататьПохоже, что размер файла (и скорость загрузки) является основной целью ADVANCED_OPTIMIZATIONS и компилятора в целом. hyperslug
Флаг ADVANCED_OPTIMIZATIONS оптимизирует не размер файла, а скорость выполнения (он пытается изменить код, чтобы он работал быстрее, а не быстрее). Kekoa
Встраивание не всегда уменьшает размер файла, если есть много вызовов. SOFe
5

Начиная с jQuery 1.4, Google 'Закрывающий компилятор используется как метод минимизации по умолчанию для выпусков jQuery. Однако jQuery использует только настройки SIMPLE_OPTIMIZATIONS. Команда JQuery имеетнет планов по поддержке ADVANCED_OPTIMIZATIONS.

Устаревший: "Тем не менее, мы считаем, что можем добиться еще большего, и хотели бы предложить любому пользователю автоматизированные способы создания оптимально минимизированного файла, который включает в себя как код приложения, так и только необходимые части jQuery. В частности, мы работаем с командой Google Closure Compiler, чтобы выяснить, можем ли мы использовать его параметр ADVANCED_OPTIMIZATIONS. Мы'У меня будет больше информации о нашем прогрессе по мере его развития ».   blog.jquery.com/2011/11/22/call-for-jquery-1-8-ideas David Mulder
0

Я пробовал с ихонлайн компилятор, это работает хорошо.

26

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

http://code.google.com/p/closure-compiler/issues/detail?id=1&может = 1 # c2

Подчеркивая, что теперь, когда выпущен jQuery 1.4, исправлены ошибки, и теперь компилятор Closure является основным минификатором для jQuery :) Matchu
Просто небольшое замечание: оказывается, что вызывать Closure Compiler довольно просто. Среди прочего, этоs оптимизирующий компилятор, удаляет мертвый код и предоставляет полезные предупреждения во время компиляции посредством статического анализа. Luís Oliveira
7

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

Если так, то неt Закрытие Компилятор удаляет почти весь код, когда вы компилируете только библиотеку jQuery? Petr Peller
На самом деле, в прошлый раз, когда я проверял Закрытие не сделална самом деле удалить неиспользуемые функции из JQuery, я думаю, потому что онифактически не определены как отдельные функции. DisgruntledGoat
Тот'Предполагается, что да, но современный компилятор замыканий далек от совершенства. David Mulder
Но, конечно, вы теряете какую-либо выгоду от кэширования кода jQuery для пользователя ».с компьютера (если он есть). Nosredna
-1

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

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

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

1

Безразлично»t Закрытие просто сворачивает и переименовывает 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

минимально полезный - Ха! Dan Esparza
Да, JQuery уже использует минификатор. Я только что прочитал статью о том, как Prototype был перекомпилирован с использованием Closure вместо YUI Compressor. Версия Prototype для Closure была на 60% меньше, чем YUI Compressor. Тот'Сумасшедший маленький и создать для ускорения веб-приложений. Ted
Я имею в виду, что произойдет, если с моей HTML-страницы я неВызовите половину функций, найденных в JQuery. не должен»Закрытие распознает это в моем HTML-документе, чтобы затем перейти и удалить те функции из моего .JS, которые не используются (в моем JS). Тот'Почему я говорю, должен ли Closure также анализировать мою HTML-страницу? Ted
@ Тинистер, как бы ты это сделал? Wouldn»После закрытия необходимо проанализировать HTML-страницу, чтобы увидеть, что называется и чтоне называется Ted
11

Я пробовал с 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 предупреждений, и я нет тест, если он все еще работает

1

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

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

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

2

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

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

Нет, ссылка больше не работает. Orvid King
Эта ссылка все еще работает? Chris Frederick

Похожие вопросы