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

StackOverflow https://stackoverflow.com/questions/1686428

Вопрос

YUI Compressor был, по общему мнению, лучшим инструментом для минимизации, но закрытие, похоже, могло быть и лучше.

Это было полезно?

Решение

«То, что вы считаете лучшим для себя», я думаю, это общий ответ на данный момент — 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

Другие советы

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

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

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

Выглядит как jQuery 1.5 только что переехал в Уродливый:

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

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

Если вы зависите от других библиотек, то, на мой взгляд, вам следует немного подождать, пока они не выпустятся. Компилятор замыканий совместимые версии.Для большинства популярных библиотек это не займет много времени.И, возможно, вы сможете предоставить исправления для тех «не очень активных» библиотек, которые вы используете сами.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top