Häufig gestellte Fragen


Was ist der Closure Compiler? Warum sollte ich die Funktion verwenden?
Der Closure Compiler ist ein Tool, mit dem JavaScript schneller heruntergeladen und ausgeführt werden kann. Mit dem Closure Compiler können Sie die Größe Ihrer JavaScript-Dateien verringern und sie effizienter machen.
Wie unterscheidet sich der Closure Compiler von anderen JavaScript-Komprimierungstools?

Im Allgemeinen sollte der Closure Compiler die Komprimierung anderer Tools zur Code-Minifizierung erreichen oder übertreffen und die Downloadzeiten für Ihre Webanwendung verbessern. Außerdem können Sie mit dem Closure Compiler Syntaxfehler während der Entwicklung (und nicht erst beim Testen) finden und potenziell fehlerhafte Codemuster erkennen.

Im einfachen Modus sollte Closure Compiler besser als andere Tools sein, da er Compiler-ähnliche Analysen verwendet, um zusätzliche Möglichkeiten zur Minimierung der Codegröße zu finden. Der Closure Compiler kann beispielsweise Funktionen, die nur wenige Male verwendet werden, inline einfügen, Variablennamen wiederverwenden und konstante Ausdrücke vorab berechnen.

Im erweiterten Modus kann Closure Compiler auch die von Ihnen hinzugefügten Typanmerkungen verwenden, um schwer zu findende Fehler zu erkennen.

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

Ja. Der Closure Compiler liest gültiges JavaScript ein und generiert gültiges JavaScript. Sie können den Closure Compiler also auf eine JavaScript-Datei anwenden, bevor oder nachdem Sie die Datei durch einen anderen Minifier laufen lassen.

Beachten Sie, dass Closure Compiler und andere Minifizierer möglicherweise bestimmte Anforderungen an den eingehenden Code stellen. Ein Minifier, der Kommentare entfernt, kann beispielsweise Lizenzen oder Anmerkungsinformationen entfernen, die von einem anderen Tool benötigt werden.

Wie kann ich das JavaScript, das vom Closure Compiler generiert wird, debuggen?
Wenn in Ihrem kompilierten Code Fehler auftreten oder er sich unerwartet verhält, können Sie Source Maps verwenden, um das Problem zu beheben. Eine Quellzuordnung stellt eine Zuordnung zwischen dem kompilierten Code und dem ursprünglichen Quellcode bereit, sodass die Entwicklertools des Browsers Ihren ursprünglichen Quellcode anstelle des kompilierten Codes anzeigen können. Damit der Closure Compiler eine Quellzuordnung erstellt, übergeben Sie das Flag --create_source_map in der Befehlszeile. 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 Breakpoints genau wie für nicht kompilierten Code festlegen. In den Entwicklertools des Browsers wird die entsprechende Zeile im ursprünglichen Quellcode angezeigt. Weitere Informationen zu den Entwicklertools von Chrome, einschließlich Informationen zu Quellzuordnungen, finden Sie unter JavaScript debuggen.
Gibt es beim Compiler einen Kompromiss zwischen der Ausführungsgeschwindigkeit meiner Anwendung und der Downloadgröße des Codes?
Ja. Jeder Optimierungs-Compiler muss Kompromisse eingehen. Einige Größenoptimierungen führen zu geringen Geschwindigkeitseinbußen. Die Entwickler des Closure Compilers haben jedoch darauf geachtet, keine signifikante zusätzliche Laufzeit einzuführen. Einige Optimierungen des Compilers verkürzen sogar die Laufzeit (siehe nächste Frage).
Optimiert der Compiler für 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, beschleunigen auch die Ausführungszeit von Code.
Gibt es Einschränkungen für die Größe der Dateien, die kompiliert werden können?
Der Webdienst für die Kompilierung hat eine maximale Dateigröße, die eigenständige Compileranwendung 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 werden kann.
Kann der Compiler jedes gültige JavaScript verarbeiten?
Meistens. Einige JavaScript-Konstrukte, einschließlich eval() und with(), können Annahmen ungültig machen, auf denen die Transformationen des Compilers basieren.
Wie viel muss ich über Webentwicklung wissen, um den Closure Compiler zu verwenden?
Der Closure Compiler ist ein Tool für die JavaScript-Entwicklung. Sie müssen also wissen, wie man in JavaScript programmiert, um den Compiler verwenden zu können. Aber jeder, der JavaScript verwendet, kann vom Closure Compiler profitieren.
Wie funktioniert der Closure Compiler mit der Closure Library?
Der Closure Compiler bietet spezielle Prüfungen und Optimierungen für Code, der die Closure-Bibliothek verwendet. Außerdem können Dateien der Closure-Bibliothek automatisch in den Closure Compiler-Dienst eingebunden werden. Unter Finding Your Way around Closure wird die Syntax zum Deklarieren der Teile von Closure beschrieben, die Sie benötigen. Informationen zur Verwendung der Closure-Bibliothek mit der API finden Sie in der API-Referenz. Wenn Sie die Closure Library mit der Closure Compiler-Anwendung verwenden möchten, müssen Sie zuerst die Closure Library herunterladen. Die Unterstützung für die Closure-Bibliothek ist in der Compileranwendung standardmäßig aktiviert.
Mein Code funktioniert nicht mehr oder der Compiler gibt Fehler aus, wenn ich mit ADVANCED_OPTIMIZATIONS kompiliere. Warum?
Für den erweiterten Modus sind in der Regel einige Vorbereitungen und Änderungen am Code erforderlich. Unter Erweiterte Kompilierung und Externs wird beschrieben, wie Sie dafür sorgen, dass Ihr Code mit ADVANCED_OPTIMIZATIONS funktioniert.
Warum gibt es in kompilierten Skripts zufällige Zeilenumbrüche?
Der Closure Compiler fügt absichtlich alle 500 Zeichen oder so Zeilenumbrüche ein. Firewalls und Proxys beschädigen oder ignorieren manchmal große JavaScript-Dateien mit sehr langen Zeilen. Wenn Sie alle 500 Zeichen einen Zeilenumbruch einfügen, wird dieses Problem vermieden. Das Entfernen der Zeilenumbrüche hat keine Auswirkungen auf die Semantik eines Skripts. Die Auswirkungen auf die Codegröße sind gering. Der Compiler optimiert die Platzierung von Zeilenumbrüchen, sodass die Auswirkungen auf die Codegröße noch geringer sind, wenn Dateien gezippt werden.
Ich habe Urheberrechtsvermerke oder Open-Source-Lizenztexte, die in meinem Quellcode enthalten sein müssen. Wie kann ich verhindern, dass der Closure Compiler diesen Text entfernt?
Der Closure Compiler unterstützt das JSDoc-Tag @license. Fügen Sie das Tag @license zu einem beliebigen JSDoc-Kommentar hinzu, um den Kommentar in der Compiler-Ausgabe beizubehalten. Weitere Informationen finden Sie unter JavaScript für den Closure Compiler annotieren.