Подтвердить что ты не робот

Должен ли я использовать компрессор YUI или новый компилятор Google Closure для сжатия моего JavaScript?

YUI Compressor был лучшим инструментом для минимизации, но Closure кажется, что это может быть лучше.

4b9b3361

Ответ 1

"Какой бы вы ни находили для вас лучше", я думаю, это общий ответ на данный момент - YUI был доступен дольше, поэтому, несомненно, будет тот, который в настоящее время имеет консенсус как лучший инструмент. В то время как Closure является новым для нас - так что нет богатого опыта с Closure, как есть с YUI. Следовательно, я не думаю, что вы найдете убедительные аргументы в пользу того, почему использовать Closure на основе опыта людей с ним просто потому, что он новый.

Чтобы не сказать, что вы не должны использовать Closure... просто мой раунд о том, чтобы сказать, я не думаю, что есть доступ к этому, пока многие люди не использовали 2 и не сравнили их.

Изменить: Есть пара ранних сравнений, говорящих, что Closure дает улучшение: http://blog.feedly.com/2009/11/06/google-closure-vs-yui-min/
http://news.ycombinator.com/item?id=924426

Дальнейшее редактирование: Стоит следить за списком выпусков для закрытия: http://code.google.com/p/closure-compiler/issues/list

Ответ 2

Из сравнений, которые я видел, Closure кажется явным победителем с точки зрения минимизации размера файла. В этой статье используются три популярные JS-библиотеки (jQuery, Prototype, MooTools) для сравнения сжатия между компрессором YUI и компилятором Closure: http://www.bloggingdeveloper.com/post/Closure-Compiler-vs-YUI-Compressor-Comparing-the-Javascript-Compression-Tools.aspx

Закрытие выходит вперед в каждом тесте, особенно в его расширенном режиме, где "минимизирует размер кода на 20-25% больше, чем компрессор YUI, обеспечивая сжатие почти на 60%".

Ответ 3

Закрытие может использоваться в простом или расширенном режиме. Простой режим довольно безопасен для большинства 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 interactive сайт компилятора Closure.

Ответ 4

Похоже, jQuery 1.5 просто переместился на UglifyJS:

Кроме того, этот переключатель weve перешел на использование UglifyJS из Компилятор Google Closure. Мы видели некоторые улучшенные размеры файлов при его использовании так было очень приятно с переключателем.

Ответ 5

Я думаю, это зависит от вашего кода. Если вы хотите скомпилировать свой собственный код, я думаю, что стоит исправить код, чтобы он работал с Closure Compiler (некоторые вещи могут показаться немного неудобными в начале). Я считаю, что Closure Compiler скоро станет лучшим выбором для таких заданий, и он также заставит вас немного убрать код и поддерживать согласованный стиль (конечно, это зависит от ваших предпочтений, вы можете ненавидеть некоторые части, я делаю: P).

Если вы зависите от других библиотек, то, на мой взгляд, вам нужно немного подождать, пока не выпустят совместимые версии Closure Compiler. Это не должно занимать много времени для большинства популярных библиотек. И, возможно, вы можете предоставить исправления для тех "не очень активных" библиотек, которые вы используете сами.

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

И здесь другое мнение - Google Closure? Я не впечатлен. Это может быть немного слишком жестко, но приятно читать. Думаю, только время покажет, какой из них лучше =)

Ответ 6

По состоянию на октябрь 2012 года, похоже, что компрессор YUI теперь устарел или, по крайней мере, больше не будет использоваться в YUI: http://www.yuiblog.com/blog/2012/10/16/state-of-yui-compressor/

Ответ 7

Здесь вы можете сделать несколько тестов и посмотреть, что лучше в каждом браузере: http://jsperf.com/closure-vs-yui