Javascript 如何缩小嵌套属性
我正在使用Javascript 如何缩小嵌套属性,javascript,uglifyjs,Javascript,Uglifyjs,我正在使用terser js缩小我的代码 输出: a.prototype.a = ... a.prototype.b = ... a.prototype.c = ... 我想要的是: var h = a.prototype h.a = ... h.b = ... h.c = ... 请注意,我不能手工编写它,因为输入是从TypeScript生成的,terser js似乎没有这样的功能,实际上它没有这样的功能是有道理的。这两段代码实际上可以有不同的行为(可以在每次访问时返回不同的值),并且在大
terser js
缩小我的代码
输出:
a.prototype.a = ...
a.prototype.b = ...
a.prototype.c = ...
我想要的是:
var h = a.prototype
h.a = ...
h.b = ...
h.c = ...
请注意,我不能手工编写它,因为输入是从
TypeScript
生成的,terser js似乎没有这样的功能,实际上它没有这样的功能是有道理的。这两段代码实际上可以有不同的行为(可以在每次访问时返回不同的值),并且在大多数用例中生成的代码实际上会更大
我知道第一个示例看起来更大,而且它是未压缩的,但是一旦使用类似的东西进行压缩(如果您关心文件大小,最好像大多数服务器一样使用gzip),重复的数据就可以很容易地压缩到压缩字典中,而得到的压缩数据实际上比对象有别名时要小
一些迷你程序实际上用于支持与您所描述的类似的各种功能(特别是闭包编译器),但开发人员后来意识到这实际上是适得其反的,并删除了这些功能
为了说明这种行为,我创建了以下两个文件:
a.js
:
a.prototype.a = 'testing 1';
a.prototype.b = 'testing 2';
a.prototype.c = 'testing 3';
var h = a.prototype;
h.a = 'testing 1';
h.b = 'testing 2';
h.c = 'testing 3';
b.js
:
a.prototype.a = 'testing 1';
a.prototype.b = 'testing 2';
a.prototype.c = 'testing 3';
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
文件实际上是最小的文件