DIY Minifizierung
kann keine minifier komprimieren richtig einen schlechten Code.
In diesem Beispiel möchte ich nur zeigen, wie viel ein Minifier tut.
Was sollten Sie tun, bevor Sie
minify Und in Bezug auf jQuery ... Ich benutze keine jQuery.jQuery für alte Browser ist, wurde aus Kompatibilitätsgründen gemacht .. überprüfen caniuse.com, fast alles funktioniert auf jedem Browser (auch ie10 ist jetzt standardisiert), ich denke jetzt ist es nur hier, um Ihre Webanwendung zu verlangsamen ...Wenn Sie die $()
mögen, sollten Sie Ihre eigene einfache Funktion erstellen.Und warum sich die Mühe machen, Ihren Code zu komprimieren, wenn Ihre Kunden das 100kb jquery-Skript jedes Mal herunterladen müssen - wie groß ist Ihr unkomprimierter Code? 5-6kb ..? Nicht über die vielen Plugins zu sprechen, die du hinzufügst, um es einfacher zu machen.
Originalcode
Wenn Sie eine Funktion schreiben Sie eine Idee haben, beginnen Sachen zu schreiben, und manchmal am Ende mit so etwas wie die folgenden code.The Code bis works.Now die meisten Leute aufhören zu denken, und fügen Sie dies zu einem Minifier und veröffentlichen Sie es.
function myFunction(myNumber){
var myArray = new Array(myNumber);
var myObject = new Object();
var myArray2 = new Array();
for(var myCounter = 0 ; myCounter < myArray.length ; myCounter++){
myArray2.push(myCounter);
var myString = myCounter.toString()
myObject[ myString ] = (myCounter + 1).toString();
}
var myContainer = new Array();
myContainer[0] = myArray2;
myContainer[1] = myObject;
return myContainer;
}
Hier iss der minified Code (i die neuen Zeilen hinzugefügt)
minimierte mit (http://javascript-minifier.com/)
function myFunction(r){
for(var n=new Array(r),t=new Object,e=new Array,a=0;a<n.length;a++){
e.push(a);
var o=a.toString();
t[o]=(a+1).toString()
}
var i=new Array;
return i[0]=e,i[1]=t,i
}
Aber sind all jene, Vars, ifs, Schleifen & Definitionen notwendig?
Die meiste Zeit NO! Entfernen
- nicht erforderlich, wenn, schleife, var
- eine Kopie des Original-Code halten
- Verwenden Sie die minifier
OPTIONAL (erhöht die Leistung & kürzere Code)
- verwenden Sie Shorthand-Operatoren
- Verwendung Bitoperatoren (nicht verwenden
Math
)
- verwenden a, b, c ... für Ihre Temp Vars
- die alte Syntax (
while
, for
... nicht forEach
)
- verwenden die Funktionsargumente als Platzhalter (in einigen Fällen)
- entfernen unnötigen
"{}","()",";",spaces,newlines
- Verwenden Sie die minifier
nun ein minifier c und komprimiere den Code, den du falsch machst.
Kein Minifier kann einen fehlerhaften Code korrekt komprimieren.
DIY
function myFunction(a,b,c){
for(b=[],c={};a--;)b[a]=a,c[a]=a+1+'';
return[b,c]
}
Es tut genau das gleiche wie die oben genannten Codes.
Leistung
http://jsperf.com/diyminify
Sie müssen immer denken, was Sie brauchen:
Bevor Sie sagen "Noone Code wie das schreiben würde unten" gehen und überprüfen Sie die erste 10 Fragen hier ...
Hier sind einige commo n Beispiele sehe ich alle zehn Minuten.
Möchten Sie eine wiederverwendbare Zustand
if(condition=='true'){
var isTrue=true;
}else{
var isTrue=false;
}
//same as
var isTrue=!!condition
Alarm ja nur, wenn es vorhanden ist
if(condition==true){
var isTrue=true;
}else{
var isTrue=false;
}
if(isTrue){
alert('yes');
}
//same as
!condition||alert('yes')
//if the condition is not true alert yes
Alarm ja oder nein
if(condition==true){
var isTrue=true;
}else{
var isTrue=false;
}
if(isTrue){
alert('yes');
}else{
alert('no');
}
//same as
alert(condition?'yes':'no')
//if the condition is true alert yes else no
Konvertieren einer Zahl in einen String oder viceversa
var a=10;
var b=a.toString();
var c=parseFloat(b)
//same as
var a=10,b,c;
b=a+'';
c=b*1
//shorter
var a=10;
a+='';//String
a*=1;//Number
Runde eine Reihe
var a=10.3899845
var b=Math.round(a);
//same as
var b=(a+.5)|0;//numbers up to 10 decimal digits (32bit)
Boden eine Reihe
var a=10.3899845
var b=Math.floor(a);
//same as
var b=a|0;//numbers up to 10 decimal digits (32bit)
Schaltergehäuse
switch(n)
{
case 1:
alert('1');
break;
case 2:
alert('2');
break;
default:
alert('3');
}
//same as
var a=[1,2];
alert(a[n-1]||3);
//same as
var a={'1':1,'2':2};
alert(a[n]||3);
//shorter
alert([1,2][n-1]||3);
//or
alert([1,2][--n]||3);
try catch
if(a&&a[b]&&a[b][c]&&a[b][c][d]&&a[b][c][d][e]){
console.log(a[b][c][d][e]);
}
//this is probably the onle time you should use try catch
var x;
try{x=a.b.c.d.e}catch(e){}
!x||conole.log(x);
mehr, wenn
if(a==1||a==3||a==5||a==8||a==9){
console.log('yes')
}else{
console.log('no');
}
console.log([1,3,5,8,9].indexOf(a)!=-1?'yes':'no');
aber indexOf
ist langsam lesen Sie diese https://stackoverflow.com/a/30335438/2450730
Zahlen
1000000000000
//same as
1e12
var oneDayInMS=1000*60*60*24;
//same as
var oneDayInMS=864e5;
var a=10;
a=1+a;
a=a*2;
//same as
a=++a*2;
einige schöne Artikel/sites fand ich über bitweise/Kurzschrift:
http://mudcu.be/journal/2011/11/bitwise-gems-and-other-optimizations/
http://www.140byt.es/
http://www.jquery4u.com/javascript/shorthand-javascript-techniques/
Es gibt auch viele jsperf Websites, die Leistung der Kurz & bitwsie zeigt, wenn Sie mit Ihrem Lieblings-Suchmaschine suchen.
Ich könnte eine Stunde gehen .. aber ich denke, es ist genug für jetzt.
Wenn Sie einige Fragen haben, fragen Sie einfach.
Und denken Sie daran
Kein minifier kann einen schlechten Code richtig komprimieren.
Insbesondere gibt es ein Online-Dienstprogramm, das mich auf diese Weise kann tun? – KalEl
Ich stolperte über diesen alten Post mit den gleichen Fragen, also gute Frage! Einige gute grundlegende Informationen: http://www.thiscouldbeuseful.com/2012/09/minified-js-for-beginners.html. – Aries51