【问题标题】:How to minify nested properties如何缩小嵌套属性
【发布时间】:2018-12-20 04:05:07
【问题描述】:

我正在使用terser-js 来缩小我的代码。

输出:

a.prototype.a = ...
a.prototype.b = ...
a.prototype.c = ...

我想要什么:

var h = a.prototype
h.a = ...
h.b = ...
h.c = ...

请注意,我不能手写,因为输入是从TypeScript 生成的。

【问题讨论】:

    标签: javascript uglifyjs


    【解决方案1】:

    terser-js 似乎没有这样的功能,实际上它没有这样的功能是有道理的。这两段代码实际上可以表现不同(getter properties 可以在每次访问时返回不同的值),并且在大多数用例中生成的代码实际上会更大。

    我知道第一个示例看起来更大,并且未压缩,但是一旦使用 gzip 之类的东西压缩(如果您关心文件大小,最好使用 gzip,就像大多数服务器一样)重复数据很容易压缩到压缩字典中,得到的压缩数据实际上小于如果对象被别名。

    一些缩小器实际上用于支持类似于您所描述的各种功能(特别是闭包编译器),但开发人员后来意识到它实际上适得其反并删除了这些功能。

    为了说明这种行为,我创建了以下 2 个文件:

    a.js

    a.prototype.a = 'testing 1';
    a.prototype.b = 'testing 2';
    a.prototype.c = 'testing 3';
    

    b.js

    var h = a.prototype;
    h.a = 'testing 1';
    h.b = 'testing 2';
    h.c = 'testing 3';
    

    在我用 gzip 压缩后查看结果:

    $ gzip -k -9 *.js
    $ ls -l
    total 32
    -rw-r--r--  1 user  group  87 Dec 22 15:50 a.js
    -rw-r--r--  1 user  group  69 Dec 22 15:50 a.js.gz
    -rw-r--r--  1 user  group  78 Dec 22 15:50 b.js
    -rw-r--r--  1 user  group  75 Dec 22 15:50 b.js.gz
    

    a.js.gz 文件实际上是最小的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多