Mi sono sempre chiesto perché i compressori js non lo fanno. Diciamo che ho uno script minified come questo:Perché i compressori js non lo fanno?
(function($){var a=$("a");1<a.length&&10>a.length?alert(a.length):alert($("p").length)})(jQuery);
Perché non compilare a qualcosa di simile:
(function($,L){var a=$("a");1<a[L]&&10>a[L]?alert(a[L]):alert($("p")[L])})(jQuery,'length');
Significato cambiando ogni occorrenza di un .property
con un [minified key]
e passare una stringa e ricevitore arg alla iife
(in pratica quello che ho fatto in precedenza con la .length
)
Immaginate quanto più questo sarebbe minify jQuery con 159 .length
, 62 .each
, 15 .appendChild
ecc. Solo il .length
s potrebbe risparmiare oltre 600 byte!
anche utilizzando l'esempio di cui sopra perché ci si spreca spazio su un var parola chiave quando si può prenotare un posto in quel funzioni portata dichiarando un altro parametro:
(function($,L,a){a=$("a");1<a[L]&&10>a[L]?alert(a[L]):alert($("p")[L])})(jQuery,'length');
Inoltre, mentre io vi ho qui, perché non mettere l'intero jQuery in una valutazione e salvare su altre 572 function
parole chiave (4.5k)?
Ero abituato a scrivere JS in quel modo, a volte lo faccio ancora. Fai anche alcuni trucchi con String.prototype.IO = String.prototype.indexOf o Us = 'undefined'; Ss = 'string'; Ow = window; e String.prototype.has (s) –