w3schools tag tab style page for color javascript uglifyjs

javascript - tag - Cómo minimizar las propiedades anidadas



title of page html (1)

terser-js no parece tener tal característica, y en realidad tiene sentido que no la tenga. Esos dos fragmentos de código pueden comportarse de manera diferente (las propiedades del captador pueden devolver valores diferentes en cada acceso) y el código resultante sería mayor en la mayoría de los casos de uso.

Sé que el primer ejemplo parece más grande y no está comprimido, pero una vez comprimido con algo como gzip (si te preocupa el tamaño de los archivos, es mejor que uses gzip, como lo hace la mayoría de los servidores), los datos repetidos se comprimen fácilmente en el diccionario de compresión , y los datos comprimidos resultantes son en realidad más pequeños que si el objeto tuviera un alias.

Algunos mineros realmente se usaron para admitir varias características similares a lo que estás describiendo (Closure Compiler en particular), pero los desarrolladores más tarde se dieron cuenta de que en realidad era contraproducente y eliminaron dichas características.

Para ilustrar este comportamiento, he creado estos 2 archivos:

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

Echa un vistazo a los resultados después de comprimirlos con 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

El archivo a.js.gz es en realidad el archivo más pequeño.

Estoy usando terser-js para reducir mi código.

La salida:

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

Lo que quiero:

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

Tenga en cuenta que no puedo escribirlo a mano porque las entradas se generan desde TypeScript .