Google Closure编译器没有压缩字符串值?

时间:2015-03-11 18:29:01

标签: javascript compression minify google-closure-compiler yui-compressor

有这样的事情:

(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);

Closure Simple mode会产生 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 compressor导致 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中压缩这些字符串变量? 为什么不这样做呢? 是因为在性能方面有更好的结果吗?

1 个答案:

答案 0 :(得分:3)

这包括Closure Compiler常见问题解答。 https://github.com/google/closure-compiler/wiki/FAQ#closure-compiler-inlined-all-my-strings-which-made-my-code-size-bigger-why-did-it-do-that

  

Closure Compiler假设您正在使用gzip压缩。如果你   不,你应该。配置服务器以gzip代码是一个   您可以进行的最有效和最简单的优化   做。 gzip算法通过尝试别名字节序列来工作   一种最佳方式。手动别名字符串几乎总是使   压缩代码大小更大,因为它颠覆了gzip自己的算法   用于别名。所以Closure Compiler将(几乎)总是内联你的   字符串,它可以,因为这将使您的压缩代码   小。