簡體   English   中英

如何縮小嵌套屬性

[英]How to minify nested properties

我正在使用terser-js來縮小我的代碼。

輸出:

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

我想要的是:

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

請注意,我無法手動編寫它,因為輸入是從TypeScript生成的。

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';

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文件實際上是最小的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM