Der Compiler-Dienst für die Schließung wurde verworfen und wird entfernt. Wir empfehlen, den Compiler stattdessen lokal auszuführen.
Übersicht
Die Closure Compiler Service API bietet programmatischen Zugriff auf die JavaScript-Kompilierung von Closure Compiler über eine webbasierte API. Die Closure Compiler UI bietet eine einfache Möglichkeit, den Compiler-Dienst über ein einfaches Formular auf einer Webseite zu verwenden. Allerdings ist das Kopieren der Ausgabe von dieser Webseite nicht die effizienteste Methode. Mit der Closure Compiler Service API erhalten Sie die Flexibilität, eigene Tools zu erstellen und einen eigenen Workflow zu erstellen.
In dieser Anleitung wird beschrieben, wie Sie JavaScript an den Closure-Compiler-Dienst senden und die Closure-Compiler-Ausgabe abrufen. In diesem Beispiel wird die einfachste Form der Closure-Compiler-Kompilierung verwendet, bei der Kommentare und Leerzeichen aus JavaScript entfernt werden.
In dieser Anleitung wird davon ausgegangen, dass Sie mit JavaScript und HTTP vertraut sind. Es wird zwar ein Python-Skript verwendet, um JavaScript an den Closure-Compiler-Dienst zu senden, aber Sie müssen Python nicht kennen, um dem Beispiel zu folgen.
Mit der API kommunizieren
- Anfrageparameter bestimmen
Sie interagieren mit dem Closure Compiler-Dienst, indem Sie HTTP-POST-Anfragen an den Closure Compiler-Server senden. Bei jeder Anfrage müssen Sie mindestens die folgenden Parameter senden:
js_code
odercode_url
-
Der Wert dieses Parameters gibt den JavaScript-Code an, den Sie kompilieren möchten. Sie müssen mindestens einen dieser Parameter angeben. Der Parameter
js_code
muss ein String sein, der JavaScript enthält, z. B.alert('hello')
. Der Parametercode_url
muss die URL einer JavaScript-.js
-Datei enthalten, die über HTTP verfügbar ist.Sie können auch benannte Quellparameter im Format
js_code:path/to/filename.js
angeben. Jede Datei wird in einem virtuellen Dateisystem erstellt, das standardisierte Module über die inECMASCRIPT6
unterstütztenimport
- undexport
-Anweisungen ermöglicht. compilation_level
-
Der Wert dieses Parameters gibt den Grad der Komprimierung und Optimierung an, der auf Ihren JavaScript-Code angewendet werden soll. Es gibt drei mögliche Kompilierungsstufen:
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
undADVANCED_OPTIMIZATIONS
. In diesem Beispiel wird dieWHITESPACE_ONLY
-Kompilierung verwendet, bei der nur Kommentare und Leerzeichen entfernt werden.Der Parameter
compilation_level
hat den StandardwertSIMPLE_OPTIMIZATIONS
. output_info
-
Der Wert dieses Parameters gibt an, welche Informationen Sie vom Compiler erhalten möchten. Es gibt vier mögliche Ausgabetypen:
compiled_code
,warnings
,errors
undstatistics
. In diesem Beispiel wird der Wertcompiled_code
verwendet, der den Closure-Compiler-Dienst anweist, die komprimierte Version des in der Anfrage empfangenen JavaScript-Codes auszugeben. output_format
-
Das Format für die Ausgabe des Closure Compiler-Dienstes. Es gibt drei mögliche Ausgabeformate:
text
,json
oderxml
. In diesem Beispiel wird der Werttext
verwendet, der Rohtext ausgibt.Der Parameter
output_format
hat den Standardwerttext
.
Weitere Informationen zu diesen erforderlichen und zusätzlichen optionalen Parametern finden Sie in der API-Referenz.
Im Beispiel in dieser einführenden Anleitung wird nur eine Zeile JavaScript-Code an den Closure Compiler-Dienst gesendet, sodass
js_code
anstelle voncode_url
verwendet wird. Sie verwendet dencompilation_level
WHITESPACE_ONLY
, fragt Rohtexte mit demoutput_format
text
ab und fordert denoutput_info
-Typcompiled_code
an. -
Post-Anfrage an den Closure-Compiler-Dienst senden
Senden Sie die in Schritt 1 in einer POST-Anfrage ausgewählten Parameter an die URL des Closure Compiler-Dienstes, um eine Ausgabe vom Closure Compiler-Dienst zu erhalten. Eine Möglichkeit dazu ist ein einfaches HTML-Formular wie das in der Hello World der Closure Compiler Service API.
Wenn Sie ein solches Formular bei der Entwicklung verwenden möchten, müssen Sie die Ausgabe aus dem Browser kopieren und in eine JS-Datei einfügen. Wenn Sie stattdessen ein kleines Programm schreiben, um die Anfrage an den Closure Compiler-Dienst zu senden, können Sie die Closure Compiler-Ausgabe direkt in eine Datei schreiben. Das folgende Python-Skript sendet die Anfrage beispielsweise an den Closure Compiler-Dienst und schreibt die Antwort:
#!/usr/bin/python2.4 import httplib, urllib, sys # Define the parameters for the POST request and encode them in # a URL-safe format. params = urllib.urlencode([ ('js_code', sys.argv[1]), ('compilation_level', 'WHITESPACE_ONLY'), ('output_format', 'text'), ('output_info', 'compiled_code'), ]) # Always use the following value for the Content-type header. headers = { "Content-type": "application/x-www-form-urlencoded" } conn = httplib.HTTPSConnection('closure-compiler.appspot.com') conn.request('POST', '/compile', params, headers) response = conn.getresponse() data = response.read() print data conn.close()
Hinweis: Um dieses Beispiel zu reproduzieren, müssen Windows-Nutzer möglicherweise Python installieren. Eine Anleitung zur Installation und Verwendung von Python unter Windows finden Sie in den FAQ zu Python unter Windows.
Dieses Skript optimiert JavaScript-Code, der als Befehlszeilenargument an ihn übergeben wird. Fügen Sie den obigen Code in eine Datei mit dem Namen
compile.py
ein, ändern Sie die Berechtigungen der Datei, damit sie ausgeführt werden kann, und führen Sie den folgenden Befehl aus:$ python compile.py 'alert("hello");// This comment should be stripped'
Dieser Befehl gibt den komprimierten Code aus der Closure-Compiler-Antwort aus:
alert("hello");
Da in diesem Beispiel eine einfache Kompilierung verwendet wird, hat der Compiler nur die Möglichkeit, den Kommentar zu entfernen.
Hinweise zu diesem Skript:
-
Die Parameter werden als URL-codierter String an die Anfragemethode der HTTPSConnection übergeben. Nach dem Aufruf von
urllib.urlencode
enthält die Variable „params“ den folgenden String:js_code=alert%28%22hello%22%29%3B%2F%2F+This+comment+should+be+stripped&output_info=compiled_code&out=text&compilation_level=WHITESPACE_ONLY
. Wenn Sie ein eigenes Skript schreiben, sollte das Skript URL-codierte Inhalte wie diesen veröffentlichen. - Die Anfrage muss immer einen
Content-type
-Header vom Typapplication/x-www-form-urlencoded
haben
-
Die Parameter werden als URL-codierter String an die Anfragemethode der HTTPSConnection übergeben. Nach dem Aufruf von
Nächste Schritte
Wie Sie den Dienst nutzen können, um in einem realistischeren Szenario eine bessere Komprimierung zu erreichen, erfahren Sie unter Dateien mit der API komprimieren.