Häufig gestellte Fragen


Was ist der Closure Compiler? Warum sollte ich dieses Format verwenden?
Der Closure Compiler ist ein Tool für schnelleres Herunterladen und Ausführen von JavaScript. Mit dem Closure Compiler können Sie die Größe Ihrer JavaScript-Dateien verringern und sie effizienter gestalten.
Wie unterscheidet sich der Closure Compiler von anderen JavaScript-Kompressoren?

Im Allgemeinen sollte der Closure Compiler die Komprimierung anderer Tools zur Codeminimierung erreichen oder überschreiten und die Downloadzeiten für Ihre Webanwendung verbessern. Darüber hinaus kann Ihnen der Closure Compiler während der Entwicklung (anstatt während Tests) helfen, Syntaxfehler zu finden und potenziell fehlerhafte Codemuster zu identifizieren.

Im einfachen Modus sollte der Closure Compiler besser funktionieren als andere Tools, da er eine Compilerähnliche Analyse verwendet, um zusätzliche Möglichkeiten zur Minimierung der Codegröße zu finden. Der Closure Compiler kann beispielsweise Funktionen einbetten, die nur in wenigen Fällen verwendet werden, Variablennamen wiederverwenden und konstante Ausdrücke im Voraus berechnen.

Im erweiterten Modus kann Closure Compiler auch Ihre hinzugefügten Typanmerkungen verwenden, um schwer zu erkennende Fehler zu finden.

Kann der Closure Compiler JavaScript kompilieren, das in HTML eingebettet ist?
Nein. Der Compiler Closure funktioniert nur für Dateien, die nur JavaScript enthalten.
Kann ich den Closure Compiler zusammen mit anderen JavaScript-Komprimierungsprogrammen verwenden?

Ja. Closure Compiler liest jedes gültige JavaScript und generiert einen gültigen JavaScript, sodass du den Closure Compiler entweder vor oder nach der Ausführung der Datei über einen anderen Minifizierer auf eine JavaScript-Datei anwenden kannst.

Denken Sie daran, dass der Compiler Closure und andere Verifizierer möglicherweise Erwartungen an den eingehenden Code haben. Ein Minifier, der Kommentare entfernt, entfernt möglicherweise Lizenzen oder Annotationsinformationen, die von einem anderen Tool benötigt werden.

Wie kann ich den vom Closure-Compiler erzeugten JavaScript-Code debuggen?
Wenn Ihr kompilierter Code Fehler ausgibt oder unerwartetes Verhalten zeigt, können Sie das Problem mit Source Maps beheben. Eine Source Map bietet eine Zuordnung zwischen dem kompilierten Code und dem ursprünglichen Quellcode, sodass die Entwicklertools des Browsers anstelle des kompilierten Codes den ursprünglichen Quellcode anzeigen können. Wenn der Closure Compiler eine Source Map erstellen soll, übergeben Sie in der Befehlszeile das Flag --create_source_map. Beispiel:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Wenn Sie dann einen Browser verwenden, der Source Maps unterstützt (z. B. Chrome oder Firefox), können Sie Haltepunkte genau wie für unkompilierten Code festlegen. In den Entwicklertools des Browsers wird dann die entsprechende Codezeile in der ursprünglichen Quelle angezeigt. Weitere Informationen zu den Entwicklertools von Chrome, einschließlich Informationen zu Source Maps, finden Sie hier.
Unternimmt der Compiler einen Kompromiss zwischen der Ausführungsgeschwindigkeit meiner Anwendung und der Größe des Downloadcodes?
Ja. Jeder Optimierungs-Compiler führt Kompromisse ein. Bei einigen Größenoptimierungen kommt es zu kleinen Overheads. Die Entwickler des Closure-Compilers haben jedoch darauf geachtet, keine signifikante zusätzliche Laufzeit einzuführen. Einige Optimierungen des Compilers reduzieren sogar die Laufzeit (siehe nächste Frage).
Optimiert der Compiler auf Geschwindigkeit?
In den meisten Fällen ist kleinerer Code schneller, da die Downloadzeit in Webanwendungen in der Regel der wichtigste Geschwindigkeitsfaktor ist. Optimierungen, die Redundanzen reduzieren, verkürzen auch die Laufzeit des Codes.
Gibt es Beschränkungen für die Größe der Dateien, die kompiliert werden können?
Der Compilation-Webdienst hat eine maximale Dateigröße, die eigenständigen Compiler-Anwendungen jedoch nicht.
Ist der Closure Compiler für alle Plattformen verfügbar?
Der Compiler ist in Java geschrieben und kann daher überall ausgeführt werden, wo Java ausgeführt wird.
Kann der Compiler beliebige JavaScript-Inhalte verarbeiten?
Meistens. Einige JavaScript-Konstrukte, einschließlich eval() und with(), können Annahmen entwerten, auf denen die Transformationen des Compilers basieren.
Wie muss ich über die Webentwicklung wissen, um den Closure Compiler nutzen zu können?
Der Closure Compiler ist ein Tool für die JavaScript-Entwicklung. Sie müssen also wissen, wie man in JavaScript programmiert, um den Compiler zu verwenden. Jeder, der JavaScript verwendet, kann von dem Closure-Compiler profitieren.
Wie funktioniert der Closure Compiler in Verbindung mit der Closure Library?
Der Closure Compiler bietet spezielle Prüfungen und Optimierungen für Code, der die Closure-Bibliothek verwendet. Darüber hinaus kann der Closure Compiler-Dienst automatisch Dateien der Closure-Bibliothek aufnehmen. Unter Der Weg zu Closure finden wird die Syntax zum Deklarieren der erforderlichen Bereiche von Closure beschrieben. Informationen zur Verwendung der Closure Library mit der API finden Sie in der API-Referenz. Wenn Sie die Closure Library mit der Closure Compiler App verwenden möchten, müssen Sie zuerst die Closure Library herunterladen. Die Unterstützung der Closure Library ist in der Compiler-Anwendung standardmäßig aktiviert.
Mein Code funktioniert nicht mehr oder der Compiler erzeugt Fehler, wenn ich mit ADVANCED_OPTIMIZATIONS kompiliere.
Im erweiterten Modus sind in der Regel einige Vorbereitungen und Codeänderungen erforderlich. Unter Erweiterte Kompilierung und externe Verbindungen wird erläutert, wie du dafür sorgst, dass dein Code mit ADVANCED_OPTIMIZATIONS funktioniert.
Warum gibt es in kompilierten Skripts zufällige Zeilenfeeds?
Der Closure Compiler fügt alle etwa 500 Zeichen absichtlich Zeilenumbrüche hinzu. Firewalls und Proxys beschädigen oder ignorieren große JavaScript-Dateien mit sehr langen Zeilen. Durch Hinzufügen von Zeilenumbrüchen alle 500 Zeichen wird das Problem verhindert. Das Entfernen der Zeilenumbrüche hat keine Auswirkungen auf die Semantik eines Skripts. Die Auswirkung auf die Codegröße ist gering und der Compiler optimiert die Platzierung von Zeilenumbrüchen, sodass der Abzug für die Codegröße noch kleiner ist, wenn Dateien mit gzip komprimiert werden.
Ich habe Urheberrechtshinweise oder Open-Source-Lizenztexte, die in meinem Quellcode angezeigt werden müssen. Wie kann ich verhindern, dass dieser Text aus dem Compiler entfernt wird?
Closure Compiler unterstützt das JSDoc @license-Tag. Fügen Sie das Tag @license jedem JSDoc-Kommentar hinzu, um den Kommentar in der Compiler-Ausgabe beizubehalten. Weitere Informationen finden Sie unter JavaScript für den Closure Compiler annotieren.