Preguntas frecuentes


¿Qué es el Closure Compiler? ¿Por qué debería usarla?
El Closure Compiler es una herramienta que permite descargar y ejecutar JavaScript más rápido. Puedes usar Closure Compiler para reducir el tamaño de tus archivos JavaScript y hacerlos más eficientes.
¿En qué se diferencia el Closure Compiler de los otros compresores JavaScript que existen?

En general, Closure Compiler debe cumplir o superar la compresión de otras herramientas de reducción de código, y mejorar los tiempos de descarga de la aplicación web. Además, Closure Compiler puede ayudarte a detectar errores de sintaxis durante el desarrollo (en lugar de durante las pruebas) y a identificar patrones de código potencialmente con errores.

En el modo simple, Closure Compiler debería poder realizar mejores acciones que otras herramientas porque usa un análisis similar al del compilador para encontrar formas adicionales de minimizar el tamaño del código. Por ejemplo, Closure Compiler puede intercalar funciones que se usan en unos pocos casos, volver a usar nombres de variables y procesar expresiones constantes de procesamiento previo.

En el modo avanzado, Closure Compiler también puede usar las anotaciones de tipo que agregaste para detectar errores difíciles de detectar.

¿El Closure Compiler puede compilar JavaScript que esté incorporado en HTML?
No. El Closure Compiler solo funciona en archivos que contienen JavaScript.
¿Puedo usar Closure Compiler junto con otros minificadores de JavaScript?

Sí. Closure Compiler lee en JavaScript válido y genera código JavaScript válido, de manera que puedes aplicarlo en un archivo JavaScript antes o después de ejecutarlo mediante un minificador diferente.

Recuerda que Closure Compiler y otros minificadores pueden tener expectativas sobre el código entrante. Un minificador que quita comentarios puede quitar las licencias o la información de anotación que necesita otra herramienta, por ejemplo.

¿Cómo puedo depurar el código JavaScript que produce Closure Compiler?
Si el código compilado muestra errores o muestra un comportamiento inesperado, puedes usar mapas de origen para depurar el problema. Un mapa de origen proporciona una asignación entre el código compilado y el código fuente original de modo que las herramientas para desarrolladores del navegador puedan mostrarte tu código fuente original en lugar del código compilado. Para que Closure Compiler produzca un mapa de origen, pasa la marca --create_source_map en la línea de comandos. Por ejemplo:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Luego, si usas un navegador que admite mapas de origen (como Chrome o Firefox), puedes establecer puntos de interrupción como lo harías para código sin compilar, y las herramientas para desarrolladores del navegador mostrarán la línea de código correspondiente en la fuente original. Para obtener más información sobre las herramientas para desarrolladores de Chrome, incluida la información sobre los mapas de origen, consulta Cómo depurar JavaScript.
¿El compilador realiza compensaciones entre la velocidad de ejecución de mi aplicación y el tamaño del código de descarga?
Sí. Cualquier compilador de optimización realiza compensaciones. Algunas optimizaciones de tamaño sí introducen sobrecargas pequeñas. Sin embargo, los desarrolladores de Closure Compiler han tenido cuidado de no introducir tiempo de ejecución adicional significativo. Algunas de las optimizaciones del compilador incluso disminuyen el tiempo de ejecución (consulta la siguiente pregunta).
¿El compilador realiza optimizaciones en función de la velocidad?
En la mayoría de los casos, el código más pequeño es más rápido, ya que el tiempo de descarga suele ser el factor de velocidad más importante en las aplicaciones web. Las optimizaciones que reducen las redundancias también aceleran el tiempo de ejecución del código.
¿Existen restricciones sobre el tamaño de los archivos que se pueden compilar?
El servicio web de compilación tiene un tamaño máximo de archivo, pero la aplicación de compilador independiente no lo tiene.
¿El Closure Compiler está disponible para todas las plataformas?
El compilador está escrito en Java, por lo que se puede ejecutar en cualquier lugar en el que se ejecute Java.
¿El compilador puede procesar JavaScript legal?
Sobre todo. Algunas construcciones de JavaScript, incluidas eval() y with(), pueden invalidar las suposiciones en las que se basan las transformaciones del compilador.
¿Cuánto necesito saber sobre el desarrollo web para usar Closure Compiler?
El Closure Compiler es una herramienta para el desarrollo de JavaScript, por lo que debes saber programar en JavaScript para usar el compilador. Sin embargo, cualquier persona que use JavaScript puede beneficiarse con el uso del Closure Compiler.
¿Cómo funciona Closure Compiler con la biblioteca de Closure?
El Closure Compiler proporciona verificaciones y optimizaciones especiales para el código que usa la biblioteca de Closure. Además, el servicio de Closure Compiler puede incluir automáticamente archivos de la biblioteca. Encontrar tu camino al cierre describe la sintaxis para declarar las partes de Closure que necesitas. Consulta la referencia de la API para obtener información sobre el uso de la biblioteca de cierres con la API. Para usar la biblioteca de Closure con la aplicación de Closure Compiler, primero debes descargar la biblioteca de Closure. La compatibilidad con la biblioteca de cierres está habilitada en la aplicación del compilador de forma predeterminada.
Mi código deja de funcionar o el compilador produce errores cuando compilo con ADVANCED_OPTIMIZATIONS. ¿Por qué?
En general, el uso del Modo avanzado requiere algunos cambios de preparación y de código. Compilación avanzada y Extern: Explica cómo asegurarte de que tu código funcione con ADVANCED_OPTIMIZATIONS
¿Por qué hay feeds de línea aleatorios en las secuencias de comandos compiladas?
El Closure Compiler agrega saltos de línea de forma intencional cada 500 caracteres aproximadamente. Los firewalls y proxies a veces corrompen o ignoran los archivos JavaScript de gran tamaño con líneas muy largas. Agregar saltos de línea cada 500 caracteres evita este problema. Quitar los saltos de línea no tiene ningún efecto en la semántica de una secuencia de comandos. El impacto en el tamaño del código es pequeño, y el compilador optimiza la posición del salto de línea para que la penalización del tamaño del código sea aún menor cuando los archivos se comprimen.
Tengo avisos de derechos de autor o texto de licencias de código abierto que debe aparecer en mi código fuente. ¿Cómo evito que el Closure Compiler quite este texto?
Closure Compiler admite la etiqueta @license de JSDoc. Agrega la etiqueta @license a cualquier comentario de JSDoc para preservar el comentario en el resultado del compilador. Consulta Cómo anotar JavaScript para Closure Compiler a fin de obtener más información.