YUI Compressor komprimiert JavaScript-Inhalte, einschließlich:
- Kommentare entfernen
- Entfernen Sie zusätzliche Leerzeichen
- Kleinere Optimierung
- Identifikator-Ersatz
Welche subtilen Optimierungen beinhaltet YUI Compressor?
- object["property"] wird optimiert, wenn der Eigenschaftsname ein zulässiger JavaScript-Bezeichner ist (Hinweis: Ein zulässiger JavaScript-Bezeichner beginnt mit einem Buchstaben, optional gefolgt von einem oder mehreren Buchstaben, Zahlen oder Unterstrichen) und keine reservierten Wörter sind an: object.property
- {"property":123}: Wenn der Eigenschaftsname ein zulässiger JavaScript-Bezeichner und kein reserviertes Wort ist, wird er auf {property:123} optimiert (Hinweis: In Objektliteralen, wenn der Eigenschaftsname ein zulässiger JavaScript-Bezeichner ist und ist kein reserviertes Wort und erfordert keine Anführungszeichen für Eigenschaftsnamen).
- 'abcd'efgh', wird zu „abcd'efgh“ optimiert.
- „abcd“ + „efgh“, wenn eine Zeichenfolge verbunden ist, wird auf „abcdefgh“ optimiert (Hinweis: Alles unter der Voraussetzung der Verwendung von YUI Compressor, für Zeichenfolgenverbindungen in Skripten sind die Effizienz und die Effizienz der Verwendung des Connectors „+“ gleich höchste Wartbarkeit).
Die effektivste Komprimierungsoptimierung für JavaScript ist der Identifier-Ersatz.
Zum Beispiel:
(Funktion(){
Funktion add(num1, num2) {
return num1 + num2;
}
})();
Nach dem Ersetzen der Gattungskennung:
(Funktion(){
Funktion A(C, B) {
return C+ B;
}
})();
Nachdem wir die zusätzlichen Leerzeichen entfernt haben, erhalten wir Folgendes:
(function(){function A(C,B){return C+B;}})();
Durch die Ersetzung von YUI-Compressor-Bezeichnern werden nur Funktionsnamen und Variablennamen ersetzt. Was kann also nicht ersetzt werden?
- Primitive Werte: Zeichenfolge, boolescher Wert, Zahl, Null und undefiniert. Im Allgemeinen nehmen Zeichenfolgen den meisten Platz ein, gefolgt von nicht numerischen Literalen (wahr, falsch, null, unterfundiert).
- Globale Variablen: Fenster, Dokument, XMLHttpRequest usw. Die am häufigsten verwendeten sind Dokument und Fenster.
- Attributname, zum Beispiel: foo.bar. Der belegte Platz ist nach Strings der zweitgrößte. Der „.“-Operator kann nicht ersetzt werden und abc verbraucht mehr Platz.
- Schlüsselwörter. Häufig verwendete Schlüsselwörter sind: var, return. Die beste Optimierungsmethode: Die Schlüsselwörter var und return kommen in einer Funktion nur einmal vor.
Die Optimierungsbehandlung für Grundwerte, globale Variablen und Attributnamen ist ungefähr die gleiche: Jeder Literalwert, jede globale Variable oder jeder Attributname, der mehr als zweimal (einschließlich zweimal) verwendet wird, sollte durch lokalen Variablenspeicher ersetzt werden.
Es gibt jedoch Situationen, in denen die Ersetzung von Bezeichnern verboten ist:
- Verwenden Sie die Funktion eval(). Lösung: Verwenden oder erstellen Sie keine globale Funktion, die eval() einkapselt.
- Verwenden Sie die with-Anweisung. Lösung: Die Methode ist die gleiche wie oben.
- Bedingte Kommentare für JScript. Die einzige Lösung: Verwenden Sie es nicht.
Da YUI Compressor auf dem Rhino-Interpreter aufbaut, sind alle oben genannten Optimierungen sicher.
Weiterführende Literatur:
„Extreme JavaScript-Komprimierung mit YUI Compressor“
Original:
http://www.planabc.net/2009/08/02/javascript-compression_with_yui_compressor/