Minify

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Minifizieren ist eine Technik, mit der Programmcode verkleinert wird, ohne seine Funktion zu verändern. Dies geschieht

  • durch Entfernen von Leerräumen (Whitespace), sofern nicht syntaktisch erforderlich
  • Entfernen von Kommentaren
  • Verwenden alternativerer, kompakterer Sprachkonstrukte
  • Umbenennen von Bezeichnern

Für compilierte Sprachen ist Minifizierung nicht von Bedeutung, aber für im Quelltext übermittelte, interpretierte Programme lässt sich eine deutliche Platzersparnis erreichen. Da die Browser Code nicht direkt als Quelltext ausführen, sondern in eine interne, teil compilierte Form übersetzen, sind Laufzeitgewinne durch Minifizierung kaum erreichbar.

Von einer Minifizierung profitiert hauptsächlich JavaScript, aber auch CSS und HTML sind minifizierbar. Ein Umbenennen von IDs und Klassen in HTML ist natürlich nur möglich, wenn die Minifizierung übergreifend über HTML, CSS und JS erfolgt.

Beispiel
Eine - zugegebenermaßen wenig sinnvolle - ausführlich notierte JavaScript Funktion
function handleMessage(message)
{
   let ergebnis;
   // Eine Message mit Steuerparameter 17 aktiviert die Sonderbehandlung 
   if (message.steuerParameter == 17) {
      ergebnis = true;
      meldungAusgeben("Siebzehn!");
      messageSonderbehandlung(message.body)
   }
   else {
      ergebnis = false;
   }
   return ergebnis;
}
Die gleiche Funktion, leicht minifiziert. Kommentare und Whitespace wurden entfernt, die if-Verzweigung durch einen ternären Operator ersetzt und der else-Teil der Verzweigung mittels des Komma-Operators gebildet.
function handleMessage(message){let ergebnis;message.steuerParameter==17?ergebnis=true,meldungAusgeben("Siebzehn!"),messageSonderbehandlung(message.body):ergebnis=false;return ergebnis;}
Eine solche Minifizierung nützt nicht viel. Man erreicht mehr, wenn man übergreifend minifizeren und Variablen- und Funktionsnamen kürzen kann
function hm(m){let e;m.steuerParameter==17?e=true,mA("Siebzehn!"),mS(m.body):e=false;return e;}
Für die Message wird angenommen, dass sie von „außen“ kommt und darum keine Umbenenung ihrer steuerParameter-Eigenschaft möglich ist. Durch Code-Umstellung lässt sich aber trotzdem noch etwas tun. Das Setzen des Ergebnisses ist unabhängig vom Aufruf der Meldung und der Sonderbehandlung, die Variable lässt sich also einsparen, wenn man den Wert true/false am Ende der Teilausdrücke setzt:
function hm(m){return m.steuerParameter==17?mA("Siebzehn!"),mS(m.body),true:false;}

Stark minifizierter JavaScript-Code ist für Menschen kaum noch lesbar und stellt damit eine einfache Form des Quellenschutzes dar. Man spricht daher auch von Verschleierung (obfuscation) oder Uglyfication.

JavaScript komprimieren

JavaScript-Code enthält üblicherweise Kommentare und Whitespace. Sie können diese durch ein Programm oder online entfernen und so ihre Scripte um 30-70% komprimieren.[1]

Natürlich existieren auch Programme, um komprimierten Code wieder zu entpacken und zu verschönern:

Weblinks

  1. David Wlash: Better Compression with UglifyJS