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
- 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
ocode_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 esempioalert('hello')
. Il parametrocode_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 istruzioniimport
eexport
supportate inECMASCRIPT6
. 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
eADVANCED_OPTIMIZATIONS
. In questo esempio viene utilizzata la compilationWHITESPACE_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
estatistics
. In questo esempio viene utilizzato il valorecompiled_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
oxml
. Questo esempio utilizza il valoretext
, 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 dicode_url
. Utilizza uncompilation_level
diWHITESPACE_ONLY
, chiede l'output di testo non elaborato conoutput_format
ditext
e richiede un tipooutput_info
dicompiled_code
. -
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
diapplication/x-www-form-urlencoded
-
I parametri vengono passati al metodo di richiesta del protocollo HTTPSConnection come stringa con codifica URL. Dopo la chiamata a
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.