javascript - compressor - jQuery compilado con Google Closure Compiler
node minify js command line (10)
¿Alguien compiló jQuery contra el nuevo compilador Closure Google?
Se han reportado grandes ahorros en el tamaño del código. Tengo curiosidad por saber cuál es el beneficio si jQuery se compiló con él.
A partir de jQuery 1.4, el compilador de cierre de Google se utiliza como la técnica de minificación predeterminada para las versiones de jQuery. Sin embargo, jQuery solo usa la configuración SIMPLE_OPTIMIZATIONS. El equipo de jQuery no tiene planes de admitir ADVANCED_OPTIMIZATIONS .
Con ADVANCED_OPTIMIZATIONS desactivado:
- jquery-1.3.2.min.js: 57254 bytes
- jquery-1.3.2.closure.js 55346 bytes (-3.4%)
- jquery-1.3.2.min.js.gz: 19680 bytes
- jquery-1.3.2.closure.js.gz: 18666 bytes (-5.2%)
Con ADVANCED_OPTIMIZATIONS activado: no funciona sin modificaciones. Con ADVANCED_OPTIMIZATIONS activado y todo lo que puedo exportar exportar ... todavía no funciona, y el código ya tiene 53466 bytes de nuevo (y 18785 gzip, que es más que el código cerrado gzipped sin ADVANCED_OPTIMIZATIONS) por lo que no parece una propuesta ganadora.
Does not Closure solo minimiza y cambia el nombre de vars? jQuery ya tiene una versión .min. Minificar con cierre de nuevo probablemente sea mínimamente útil y potencialmente peligroso.
Editar: lo acabo de hacer.
Compilation was a success!
Original Size: 55.91KB (19.28KB gzipped)
Compiled Size: 54.05KB (18.28KB gzipped)
Saved 3.34% off the original size (5.18% off the gzipped size)
Esto está encima de la versión ya minada. Hay una demostración aquí: http://closure-compiler.appspot.com/home
El compilador de cierre elimina cualquier código que no use en realidad. La página web típica solo usará una pequeña fracción de las funciones de jQuery, por lo que la mayor ventaja vendrá al compilar el código junto con la versión completa de jQuery.
Intenté con jQuery jQuery 1.3.2
jQuery-1.3.2.min.js 57254 Bytes
jQuery closure compiler 49730 Bytes
-----------------------------------
Reduced by 7524 Bytes
Saved 13.31% off the original size
Saved 10.87% off the gzipped size
Ganancia de ~ 7KB
Pero también informa 15 Advertencias y no probé si todavía funciona
Intenté con su http://closure-compiler.appspot.com/home , funciona bien.
John Resig reportó un error en las funciones recursivas cuando intentó compilar una versión nocturna de jQuery 1.4, por lo que se deben resolver algunos problemas. No utilizaría un jQuery compilado con Closure Compiler sin asegurarme de que pasa el jwuery testbed.
http://code.google.com/p/closure-compiler/issues/detail?id=1&can=1#c2
Por curiosidad, armé una prueba SlickSpeed de las últimas librerías Prototype y jQuery, reducidas con YUI y Closure. Puede ejecutar las pruebas aquí .
Como han señalado otros, la compilación con ADVANCED_OPT no funciona, pero si alguien quiere hacer el trabajo, me complacerá agregar los resultados a la prueba SlickSpeed.
Utilicé Closure (con ADVANCED_OPTIMIZATIONS) para comprimir el código de JavaScript para un sitio de una sola página que alojé y vi un ahorro de tamaño significativo con respecto al compresor YUI. Así que comencé a buscar la reducción de jQuery para ese sitio también, ya que ciertamente no usa la biblioteca entier jQuery.
Recibo advertencias cada vez que ejecuto jQuery a través del compilador, principalmente señalando partes del código que no se utilizan. Aún así, el código compilado no funciona. El principal problema que veo es que el compilador no está exportando correctamente las cosas. Pude exportar funciones fácilmente desde mi propio código adjuntándolas al objeto ventana, pero aún no he podido hacer esto con jQuery.
La buena noticia es que John Resig ya está experimentando con Closure. Sospecho que veremos nuevas versiones de ambos compatibles en un futuro cercano.
jQuery no es compatible (todavía) con el compilador de cierre en modo avanzado. Estoy de acuerdo en que sería algo muy bueno hacer que sea compatible, porque su sintaxis de encadenamiento de métodos se presta muy rápidamente para prototipar la virtualización con una velocidad de ejecución mucho mejor.
De hecho, entre las populares bibliotecas de JavaScript (distintas de Closure Library), solo Dojo Toolkit es compatible con el modo Closure Advanced.