Компилятор Google Closure не сжимает строковые значения?

Имея что-то вроде этого:

(function ($, window, document, undefined) {
    'use strict';
    $.fn.demo = function (options) {

        var active = "active";
        var section = ".bb-demo";

        $(section).addClass(active);
        $(section).addClass(active);
        $(section).addClass(active);
        $(section).addClass(active);

    };
})(jQuery, window, document);

Простой режим закрытия приводит к 200 байтам:

(function(a,b,c,d){a.fn.demo=function(b){a(".bb-demo").addClass("active");a(".bb-demo").addClass("active");a(".bb-demo").addClass("active");a(".bb-demo").addClass("active")}})(jQuery,window,document);

В то время как компрессор YUI дает 169 байт:

(function(c,b,a,d){c.fn.demo=function(e){var g="active";var f=".bb-demo";c(f).addClass(g);c(f).addClass(g);c(f).addClass(g);c(f).addClass(g)}})(jQuery,window,document);

Нет ли способа сжать эти строковые переменные в Closure? почему не делает? Это из-за лучших результатов с точки зрения производительности?


person Alvaro    schedule 11.03.2015    source источник
comment
возможный дубликат Предотвратить дублирование строки компилятором Closure   -  person Chad Killingsworth    schedule 12.03.2015


Ответы (1)


Это описано в FAQ по Closure Compiler. https://github.com/google/closure-compiler/wiki/FAQ#closure-compiler-inlined-all-my-strings-what-made-my-code-size-bigger-why-did-it-do-that

Компилятор Closure предполагает, что вы используете сжатие gzip. Если вы этого не сделаете, вы должны. Настройка вашего сервера для gzip вашего кода — одна из самых эффективных и простых оптимизаций, которые вы можете сделать. Алгоритм gzip работает, пытаясь оптимальным образом использовать псевдонимы последовательностей байтов. Псевдонимы строк вручную почти всегда увеличивают размер сжатого кода, потому что это нарушает собственный алгоритм gzip для псевдонимов. Таким образом, Closure Compiler будет (почти) всегда встраивать ваши строки, когда это возможно, потому что это сделает ваш сжатый код меньше.

person John    schedule 12.03.2015
comment
Спасибо, я пропустил часто задаваемые вопросы в github! - person Alvaro; 12.03.2015