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

Вы можете предоставить функцию, включающую параметр для приемлемой разницы между двумя значениями. Например,

// close is good for horseshoes, hand grenades, nuclear weapons, and doubles
static bool CloseEnoughForMe(double value1, double value2, double acceptableDifference)
{
    return Math.Abs(value1 - value2) <= acceptableDifference; 
}

А затем назовите его

double value1 = 24.5;
double value2 = 24.4999;

bool equalValues = CloseEnoughForMe(value1, value2, 0.001);

Если вы хотите быть немного профессионалом в этом, вы можете вызвать функцию ApproximatelyEquals или что-то в этом роде.

static bool ApproximatelyEquals(this double value1, double value2, double acceptableDifference)
50
задан Maiku Mori 8 November 2009 в 02:22
поделиться

4 ответа

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

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

Изменить: Есть несколько ранних сравнений, в которых говорится, что закрытие действительно дает улучшение: 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

27
ответ дан 7 November 2019 в 11:04
поделиться

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

10
ответ дан 7 November 2019 в 11:04
поделиться

I think it depends on your code. If you want to compile your own code, then I think it is worth it to patch the code so that it works with Closure Compiler (some things might seem a bit awkward at the start). I believe Closure Compiler soon will be the top choice for such jobs and it will also make you to tidy up your code a bit and maintain consistent style (of course it depends on your preferences, you might hate some parts, I do :P ).

If you depend on other libraries then in my opinion you should wait a bit until they release Closure Compiler compatible versions. It shouldn't take much time for most popular libraries out there. And maybe you can provide fixes for those "not-so-active" libraries which you use yourself.

I'm talking about Advanced Compilation mode here, the Simple Compilation mode as some has pointed out is fairly safe to use.

And here's a different opinion - Google Closure ? I'm Not Impressed. It's maybe a little bit too harsh, but nice read. I guess only time will tell which one is better =)

5
ответ дан 7 November 2019 в 11:04
поделиться

Из сравнений, которые я видел, 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%»

14
ответ дан 7 November 2019 в 11:04
поделиться
Другие вопросы по тегам:

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