Wei*_*ieh 20 javascript uglifyjs
我正在使用terser-js缩小我的代码.
输出:
a.prototype.a = ...
a.prototype.b = ...
a.prototype.c = ...
Run Code Online (Sandbox Code Playgroud)
我想要的是:
var h = a.prototype
h.a = ...
h.b = ...
h.c = ...
Run Code Online (Sandbox Code Playgroud)
请注意,我无法手动编写它,因为输入是从中生成的TypeScript.
Ale*_*ara 18
terser-js似乎没有这样的功能,它实际上是不合理的.这两段代码实际上可以表现不同(getter属性可以在每次访问时返回不同的值),并且在大多数用例中生成的代码实际上会更大.
我知道第一个例子看起来更大,并且未压缩它,但是一旦用gzip之类的东西压缩(如果你关心文件大小,你最好使用gzip,就像大多数服务器那样),重复的数据很容易压缩到压缩字典中,并且生成的压缩数据实际上小于对象是别名的情况.
一些minifiers实际上用于支持类似于你所描述的各种功能(特别是Closure Compiler),但开发人员后来意识到它实际上是适得其反并删除了这些功能.
为了说明这种行为,我创建了这两个文件:
a.js :
a.prototype.a = 'testing 1';
a.prototype.b = 'testing 2';
a.prototype.c = 'testing 3';
Run Code Online (Sandbox Code Playgroud)
b.js :
var h = a.prototype;
h.a = 'testing 1';
h.b = 'testing 2';
h.c = 'testing 3';
Run Code Online (Sandbox Code Playgroud)
用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
Run Code Online (Sandbox Code Playgroud)
该a.js.gz文件实际上是最小的文件.
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |