Komunikacja z interfejsem Servicesure Compiler Service API

Kompilator zamknięty został wycofany i zostanie usunięty. Zamiast tego rozważ uruchomienie kompilatora lokalnie.

Omówienie

Interfejs API usługi Closure Compiler zapewnia zautomatyzowany dostęp do kompilatora JavaScript usługi Closure Compiler za pomocą internetowego interfejsu API. Interfejs Closure Compiler pozwala w prosty sposób korzystać z usługi kompilacji za pomocą prostego formularza na stronie internetowej, jednak kopiowanie wyników z tej strony nie jest najskuteczniejszym sposobem. Dzięki interfejsowi API usługi Closure Compiler zyskujesz elastyczność dzięki możliwości tworzenia własnych narzędzi i tworzenia własnego przepływu pracy.

W tym samouczku omawiamy proces wysyłania kodu JavaScript do usługi kompozytora Closure oraz odzyskiwania go. Używany jest w tym przypadku podstawowy poziom kompilatora Closure Compiler, w którym po prostu usuwamy komentarze i odstępy z kodu JavaScript.

W tym samouczku zakładamy, że masz podstawową znajomość JavaScriptu i HTTP. Do przesyłania kodu JavaScript do usługi Closure Compiler używany jest skrypt w Pythonie, ale nie trzeba znać języka Python, żeby postępować zgodnie z przykładem.

Komunikacja z interfejsami API

  1. Określanie parametrów żądania

    Aby skorzystać z usługi kompozytora Closure, przez wysłanie żądań HTTP POST do serwera Closure Compiler. Z każdym żądaniem należy przesłać co najmniej następujące parametry:

    js_code lub code_url

    Wartość tego parametru wskazuje kod JavaScript, który chcesz skompilować. Musisz uwzględnić co najmniej jeden z tych parametrów. Parametr js_code musi być ciągiem zawierającym kod JavaScript, np. alert('hello'). Parametr code_url musi zawierać adres URL pliku JavaScript .js dostępnego przez HTTP.

    Możesz też uwzględnić nazwane parametry źródła w formacie js_code:path/to/filename.js. Każdy plik zostanie utworzony w wirtualnym systemie plików, aby umożliwić standaryzowane moduły za pomocą instrukcji import i export obsługiwanych w ECMASCRIPT6.

    compilation_level

    Wartość tego parametru określa stopień kompresji i optymalizacji pliku JavaScript. Dostępne są 3 poziomy kompilacji: WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS i ADVANCED_OPTIMIZATIONS. W tym przykładzie użyto kompilacji kompilacji WHITESPACE_ONLY, która tylko usuwa komentarze i odstępy.

    Parametr compilation_level przyjmuje domyślnie wartość SIMPLE_OPTIMIZATIONS.

    output_info

    Wartość tego parametru wskazuje, jakiego rodzaju informacji oczekujesz od kompilatora. Dostępne są 4 rodzaje danych wyjściowych: compiled_code, warnings, errors i statistics. W tym przykładzie użyto wartości compiled_code, która informuje usługę kompilatora Closure Compiler do wyświetlania skompresowanej wersji kodu JavaScript otrzymanej w żądaniu.

    output_format

    Format danych wyjściowych usługi kompozytora Closure. Dostępne są 3 formaty danych wyjściowych: text, json lub xml. W tym przykładzie użyto wartości text, która zwraca nieprzetworzony tekst.

    Parametr output_format przyjmuje domyślnie wartość text.

    Więcej informacji o tych wymaganych parametrach i dodatkowych parametrach opcjonalnych znajdziesz w dokumentacji API.

    Przykład w tym wstępnym samouczku wysyła tylko jeden wiersz nieprzetworzonego kodu JavaScript do usługi Closure Compiler, więc korzysta z js_code, a nie code_url. Wykorzystuje compilation_level z WHITESPACE_ONLY, prosi o nieprzetworzony tekst z wartością output_format wynoszącą text i prosi o typ output_info compiled_code.

  2. Przesyłanie żądania do usługi kompilacji zamkniętej

    Aby uzyskać dane wyjściowe z usługi Closure Compiler, wyślij parametry wybrane w kroku 1 w żądaniu POST na adres URL interfejsu API usługi Closure Compiler. Możesz to zrobić przy użyciu prostego formularza HTML, takiego jak ten dostępny w interfejsie Hello World of Closure Compiler Service API.

    Aby użyć tego formularza w trakcie tworzenia, należy jednak skopiować dane wyjściowe z przeglądarki i wkleić je do pliku .js. Jeśli zamiast tego napiszesz mały program, który będzie wysyłać żądanie do usługi kompilatora Closure, możesz bezpośrednio zapisać dane wyjściowe tego kompilatora w pliku. Na przykład ten skrypt w Pythonie wysyła żądanie do kompilatora Closure i zapisuje odpowiedź:

    #!/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()
    

    Uwaga: aby odtworzyć ten przykład, użytkownicy systemu Windows mogą zainstalować Pythona. Przeczytaj sekcję Najczęstsze pytania na temat Pythona Windows, aby dowiedzieć się, jak zainstalować i używać Pythona w systemie Windows.

    Ten skrypt optymalizuje przesłany JavaScript jako argument wiersza poleceń. Wklej powyższy kod do pliku o nazwie compile.py, zmień uprawnienia pliku na wykonywalny i wykonaj to polecenie:

    $ python compile.py 'alert("hello");// This comment should be stripped'
    

    To polecenie wyświetla skompresowany kod z odpowiedzi Compute Compiler:

    alert("hello");
    

    W tym przykładzie użyto podstawowej kompilacji, więc kompilator nie robi nic więcej niż usunięcie komentarza.

    Pamiętaj o tych kwestiach:

    • Parametry są przekazywane do metody żądania HTTPSConnection w postaci zakodowanego adresu URL. Po wywołaniu tagu urllib.urlencode zmienna zawiera parametry:
      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
          
      . Jeśli napiszesz własny skrypt, powinien on zawierać taką treść.
    • Żądanie musi zawsze mieć nagłówek Content-type w wysokości application/x-www-form-urlencoded
  3. Dalsze kroki

    Aby dowiedzieć się, jak używać usługi w celu uzyskania lepszej kompresji w bardziej realistycznym scenariuszu programowania, przejdź do artykułu Kompresja plików za pomocą interfejsu API.