Preguntas frecuentes


¿Qué es el compilador de Closure? ¿Por qué debería usarla?
El compilador de Closure es una herramienta para que JavaScript se descargue y se ejecute más rápido. Puedes usar el compilador de Closure 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 de JavaScript disponibles?

En general, el compilador de Closure debería igualar o superar la compresión de otras herramientas de minimización de código y mejorar los tiempos de descarga de tu aplicación web. Además, el compilador de Closure puede ayudarte a encontrar errores de sintaxis durante el desarrollo (en lugar de durante las pruebas) y a identificar patrones de código potencialmente defectuosos.

En el modo Simple, Closure Compiler debería poder hacerlo mejor que otras herramientas, ya que usa un análisis similar al de un compilador para encontrar formas adicionales de minimizar el tamaño del código. Por ejemplo, el compilador de Closure puede insertar funciones que se usan en pocas ocasiones, reutilizar nombres de variables y precalcular expresiones constantes.

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

¿Puede el compilador de Closure compilar JavaScript incorporado en HTML?
No. El compilador de Closure solo funciona en archivos que contienen JavaScript.
¿Puedo usar el compilador de Closure junto con otros reductores de JavaScript?

Sí. El compilador de Closure lee cualquier código JavaScript válido y genera código JavaScript válido, por lo que puedes aplicar el compilador de Closure a un archivo JavaScript antes o después de ejecutar el archivo a través de un minificador diferente.

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

¿Cómo puedo depurar el código JavaScript que produce el compilador de Closure?
Si tu código compilado arroja 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 para que las herramientas para desarrolladores del navegador puedan mostrarte tu código fuente original en lugar del código compilado. Para que Closure Compiler genere 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 el código sin compilar, y las herramientas para desarrolladores del navegador mostrarán la línea de código correspondiente en el código 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 alguna compensación 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 introducen pequeñas sobrecargas de velocidad. Sin embargo, los desarrolladores del compilador de Closure se aseguraron de no introducir un tiempo de ejecución adicional significativo. Algunas de las optimizaciones del compilador incluso reducen el tiempo de ejecución (consulta la siguiente pregunta).
¿El compilador optimiza 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.
¿Hay 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.
¿El compilador de cierre está disponible para todas las plataformas?
El compilador está escrito en Java, por lo que se puede ejecutar en cualquier lugar donde se ejecute Java.
¿Puede el compilador procesar cualquier código JavaScript válido?
Casi siempre. 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 desarrollo web para usar el Closure Compiler?
El compilador de Closure 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 del uso del compilador de Closure.
¿Cómo funciona el compilador de Closure con la biblioteca de Closure?
El compilador de Closure 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 de Closure. Cómo encontrar tu camino en Closure 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 Closure con la API. Para usar la biblioteca de Closure con la aplicación del compilador de Closure, primero debes descargar la biblioteca de Closure. La compatibilidad con la biblioteca de Closure está habilitada de forma predeterminada en la aplicación del compilador.
Mi código deja de funcionar o el compilador produce errores cuando compilo con ADVANCED_OPTIMIZATIONS. ¿Por qué?
Por lo general, usar el modo avanzado requiere cierta preparación y cambios en el código. Advanced Compilation and Externs explica cómo asegurarte de que tu código funcione con ADVANCED_OPTIMIZATIONS.
¿Por qué hay avances de línea aleatorios en las secuencias de comandos compiladas?
El compilador de Closure agrega intencionalmente saltos de línea cada 500 caracteres aproximadamente. A veces, los firewalls y los proxies dañan o ignoran los archivos JavaScript grandes con líneas muy largas. Agregar saltos de línea cada 500 caracteres evita este problema. Quitar los saltos de línea no afecta 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 ubicación de los saltos de línea para que la penalización del tamaño del código sea aún menor cuando los archivos se comprimen con gzip.
Tengo avisos de derechos de autor o texto de licencia de código abierto que deben aparecer en mi código fuente. ¿Cómo evito que el compilador de cierre quite este texto?
El compilador de Closure admite la etiqueta @license de JSDoc. Agrega la etiqueta @license a cualquier comentario de JSDoc para conservar el comentario en el resultado del compilador. Consulta Cómo anotar JavaScript para el compilador de Closure para obtener más información.