Comunicazione con l'API Closure Compiler Service

Il servizio di compilazione della chiusura è deprecato e verrà rimosso. Considera invece di eseguire il compilatore localmente.

Panoramica

L'API del servizio Closure Compiler fornisce accesso programmatico alla compilazione JavaScript di Closure Compiler tramite un'API basata sul Web. Sebbene la Closure Compiler UI offra un modo semplice per utilizzare il servizio di compilazione tramite un modulo semplice su una pagina web, copiare l'output da questa pagina web non è il modo più efficiente per lavorare. L'API del servizio Closure Compiler ti offre la versatilità necessaria per realizzare i tuoi strumenti e creare un flusso di lavoro personalizzato.

Questo tutorial illustra il processo di invio di JavaScript al servizio di compilazione di Closure e il ripristino dell'output del componente di chiusura. L'esempio utilizza il livello più semplice di compilazione del componente Closure Compiler, che rimuove semplicemente i commenti e lo spazio vuoto da JavaScript.

Questo tutorial presuppone che tu abbia una conoscenza di base di JavaScript e HTTP. Anche se utilizza uno script Python per inviare JavaScript al servizio Closure Compiler, non è necessario conoscere Python per seguire l'esempio.

Come comunicare con l'API

  1. Determina i parametri della richiesta

    Interagisci con il servizio Closure Compiler inviando richieste POST HTTP al server Closure Compiler. Per ogni richiesta devi inviare almeno i seguenti parametri:

    js_code o code_url

    Il valore di questo parametro indica il codice JavaScript che vuoi compilare. Devi includere almeno uno di questi parametri e puoi includere entrambi. Il parametro js_code deve essere una stringa contenente JavaScript, ad esempio alert('hello'). Il parametro code_url deve contenere l'URL di un file .js JavaScript JavaScript disponibile tramite HTTP.

    Puoi anche includere parametri di origine denominati nel formato js_code:path/to/filename.js. Ogni file verrà creato in un file system virtuale, in modo da abilitare i moduli standardizzati tramite le istruzioni import e export supportate in ECMASCRIPT6.

    compilation_level

    Il valore di questo parametro indica il grado di compressione e ottimizzazione da applicare al tuo codice JavaScript. Esistono tre livelli di compilazione possibili: WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS e ADVANCED_OPTIMIZATIONS. In questo esempio viene utilizzata la compilation WHITESPACE_ONLY, che rimuove semplicemente i commenti e lo spazio vuoto.

    Il valore predefinito del parametro compilation_level è SIMPLE_OPTIMIZATIONS.

    output_info

    Il valore di questo parametro indica il tipo di informazioni che vuoi dal compilatore. Esistono quattro possibili tipi di output: compiled_code, warnings, errors e statistics. In questo esempio viene utilizzato il valore compiled_code, che indica al servizio di compilazione Closure di generare la versione compressa di JavaScript che riceve nella richiesta.

    output_format

    Il formato per l'output del servizio Closure Compiler. Esistono tre possibili formati di output: text, json o xml. Questo esempio utilizza il valore text, che restituisce testo non elaborato.

    Il valore predefinito del parametro output_format è text.

    Per ulteriori informazioni su questi parametri obbligatori e su altri parametri facoltativi, consulta il Riferimento API.

    L'esempio in questo tutorial introduttivo invia solo una riga di codice JavaScript non elaborato al servizio Closure Compiler, quindi utilizza js_code invece di code_url. Utilizza un compilation_level di WHITESPACE_ONLY, chiede l'output di testo non elaborato con output_format di text e richiede un tipo output_info di compiled_code.

  2. Inviare una richiesta di post al servizio di chiusura chiusura

    Per ottenere l'output dal servizio Closure Compiler, invia i parametri che hai scelto nel passaggio 1 in una richiesta POST all'URL dell'API del servizio Closure Compiler. Un modo è utilizzare un semplice modulo HTML, come quello riportato nell'API Hello World of the Closure Compiler Service.

    Per utilizzare un modulo come questo durante lo sviluppo, tuttavia, devi copiare l'output dal browser e incollarlo in un file .js. Se, invece, scrivi un piccolo programma per inviare la richiesta al servizio Closure Compiler, puoi scrivere l'output del compilatore Closure direttamente in un file. Ad esempio, il seguente script Python invia la richiesta al servizio Closure Compiler e scrive la risposta:

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

    Nota: per riprodurre questo esempio, gli utenti Windows potrebbero dover installare Python. Per istruzioni sull'installazione e l'utilizzo di Python in Windows, consulta le Domande frequenti su Python per Windows.

    Questo script ottimizza JavaScript trasmesso come argomento a riga di comando. Incolla il codice riportato sopra in un file denominato compile.py, modifica le autorizzazioni del file per renderlo eseguibile ed esegui il seguente comando:

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

    Questo comando stampa il codice compresso dalla risposta del componente Closure Compiler:

    alert("hello");
    

    Poiché in questo esempio viene utilizzata la compilazione di base, il compilatore non fa altro che eliminare il commento.

    Di seguito sono riportati alcuni aspetti da considerare in merito a questo script:

    • I parametri vengono passati al metodo di richiesta del protocollo HTTPSConnection come stringa con codifica URL. Dopo la chiamata a urllib.urlencode, la variabile dei parametri contiene la seguente stringa:
      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
          
      Se scrivi il tuo script, lo script deve pubblicare contenuti con codifica URL come questo.
    • La richiesta deve avere sempre un'intestazione Content-type di application/x-www-form-urlencoded
  3. Passaggi successivi

    Per imparare a utilizzare il servizio al fine di ottenere una migliore compressione in uno scenario di sviluppo più realistico, continua con la sezione Compressione dei file con l'API.