El servicio de compilador para cierres está obsoleto y se quitará. En su lugar, considera ejecutar el compilador de forma local.
Descripción general
La API del servicio de Closure Compiler proporciona acceso programático a la compilación de JavaScript de Closure Compiler a través de una API basada en la Web. Si bien la IU del compilador de Closure te brinda una manera sencilla de usar el servicio del compilador a través de un formulario simple en una página web, copiar los resultados de esta no es la manera más eficiente de trabajar. Con la API del servicio de Closure Compiler, obtienes la versatilidad de compilar tus propias herramientas y crear tu propio flujo de trabajo.
En este instructivo, se explica el proceso de enviar JavaScript al servicio de Closure Compiler y obtener el resultado del compilador de Closure. En el ejemplo, se usa el nivel más básico de compilación de Closure Compiler, que simplemente quita los comentarios y los espacios en blanco de JavaScript.
En este instructivo, se supone que tienes conocimientos básicos de JavaScript y HTTP. Si bien usa una secuencia de comandos de Python para enviar JavaScript al servicio de Closure Compiler, no necesitas saber Python para seguir el ejemplo.
Cómo comunicarse con la API
- Determina los parámetros de la solicitud
Interactúas con el servicio de Closure Compiler cuando realizas solicitudes HTTP POST al servidor de Closure Compiler. Con cada solicitud, debes enviar al menos los siguientes parámetros:
js_code
ocode_url
-
El valor de este parámetro indica el código JavaScript que deseas compilar. Debes incluir al menos uno de estos parámetros y puedes incluirlos. El parámetro
js_code
debe ser una string que contenga JavaScript, comoalert('hello')
. El parámetrocode_url
debe contener la URL de un archivo.js
de JavaScript que esté disponible mediante HTTP.También puedes incluir parámetros de origen con nombre en el formato
js_code:path/to/filename.js
. Cada archivo se creará en un sistema de archivos virtual, lo que habilitará módulos estandarizados mediante las declaracionesimport
yexport
compatibles conECMASCRIPT6
. compilation_level
-
El valor de este parámetro indica el grado de compresión y optimización que se aplicará a tu JavaScript. Hay tres niveles de compilación posibles:
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
yADVANCED_OPTIMIZATIONS
. En este ejemplo, se usa la compilaciónWHITESPACE_ONLY
, que solo quita los comentarios y los espacios en blanco.El valor predeterminado del parámetro
compilation_level
esSIMPLE_OPTIMIZATIONS
. output_info
-
El valor de este parámetro indica el tipo de información que deseas del compilador. Hay cuatro tipos de resultados posibles:
compiled_code
,warnings
,errors
ystatistics
. En este ejemplo, se usa el valorcompiled_code
, que le indica al servicio de Closure Compiler que muestre la versión comprimida de JavaScript que recibe en la solicitud. output_format
-
El formato para el resultado del servicio de Closure Compiler. Existen tres formatos de salida posibles:
text
,json
oxml
. En este ejemplo, se usa el valortext
, que genera texto sin procesar.El valor predeterminado del parámetro
output_format
estext
.
Para obtener más información sobre estos parámetros obligatorios y los parámetros opcionales adicionales, consulta la referencia de la API.
En el ejemplo de este instructivo introductorio, solo se envía una línea de JavaScript sin procesar al servicio de Closure Compiler, por lo que se usa
js_code
en lugar decode_url
. Usa uncompilation_level
deWHITESPACE_ONLY
, pide una salida de texto sin procesar con unoutput_format
detext
y pide un tipooutput_info
decompiled_code
. -
Envía una solicitud posterior al servicio de Closure Compiler
Para obtener un resultado del servicio de Closure Compiler, envía los parámetros que elegiste en el paso 1 de una solicitud POST a la URL de la API del servicio de Closure Compiler. Una forma de hacerlo es con un formulario HTML simple, como el de Hello World of the Closure Compiler Service API.
Sin embargo, para usar un formulario como este durante el desarrollo, debes copiar el resultado del navegador y pegarlo en un archivo .js. Si, en cambio, escribes un pequeño programa para enviar la solicitud al servicio de Closure Compiler, puedes escribir la salida del compilador de Closure directamente en un archivo. Por ejemplo, la siguiente secuencia de comandos de Python envía la solicitud al servicio de Closure Compiler y escribe la respuesta:
#!/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: Para reproducir este ejemplo, es posible que los usuarios de Windows deban instalar Python. Consulta las Preguntas frecuentes de Windows Python para obtener instrucciones sobre cómo instalar y usar Python en Windows.
Esta secuencia de comandos optimiza el código JavaScript que se le pasa como argumento de la línea de comandos. Pega el código anterior en un archivo llamado
compile.py
, cambia los permisos del archivo para que sea ejecutable y ejecuta el siguiente comando:$ python compile.py 'alert("hello");// This comment should be stripped'
Este comando imprime el código comprimido de la respuesta de Closure Compiler:
alert("hello");
Debido a que en este ejemplo se usa compilación básica, el compilador no hace más que quitar el comentario.
A continuación, presentamos algunos aspectos que debe tener en cuenta sobre esta secuencia de comandos:
-
Los parámetros se pasan al método de solicitud de HTTPSConnection como una string codificada en URL. Después de la llamada a
urllib.urlencode
, la variable de parámetros contiene la siguiente 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
Si escribes tu propia secuencia de comandos, la secuencia de comandos debe publicar contenido codificado en formato URL como este. - La solicitud siempre debe tener un encabezado
Content-type
deapplication/x-www-form-urlencoded
-
Los parámetros se pasan al método de solicitud de HTTPSConnection como una string codificada en URL. Después de la llamada a
Próximos pasos
Si deseas aprender a usar el servicio para lograr una mejor compresión en una situación de desarrollo más realista, continúa con Comprime los archivos con la API.