Mit der Closure Compiler Service API kommunizieren

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

  1. 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 oder code_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 Parameter code_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 in ECMASCRIPT6 unterstützten import- und export-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 und ADVANCED_OPTIMIZATIONS. In diesem Beispiel wird die WHITESPACE_ONLY-Kompilierung verwendet, bei der nur Kommentare und Leerzeichen entfernt werden.

    Der Parameter compilation_level hat den Standardwert SIMPLE_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 und statistics. In diesem Beispiel wird der Wert compiled_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 oder xml. In diesem Beispiel wird der Wert text verwendet, der Rohtext ausgibt.

    Der Parameter output_format hat den Standardwert text.

    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 von code_url verwendet wird. Sie verwendet den compilation_level WHITESPACE_ONLY, fragt Rohtexte mit dem output_format text ab und fordert den output_info-Typ compiled_code an.

  2. 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 Typ application/x-www-form-urlencoded haben
  3. 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.