Entre Yahoo! UI Compressor, Dean Edwards Packer y jsmin, que produce mejores resultados, tanto en términos de huella resultante y menos errores al ofuscar.¿Qué biblioteca de miniaturas javascript produce mejores resultados?
Respuesta
Mejor es un poco subjetivo aquí, ya que hay varios factores a tener en cuenta (incluso más allá de los que la lista):
- tamaño comprimido no cuenta toda la historia, desde un compresor agresivo puede resultar en más lenta tiempo de ejecución debido al tiempo adicional necesario para ejecutar el código de desempaquetado antes de la interpretación del navegador.
- Los errores son más fáciles de evitar cuando se controla el código de entrada: el uso prudente de los puntos y comas recorre un largo camino. Ejecute JSLint sobre su código y solucione los problemas informados.
- El estilo y el tamaño del código en sí afectarán los resultados, por supuesto.
- Y, por último, vale la pena tener en cuenta que la compresión gzip del lado del servidor siempre resultará en una descarga más pequeña que cualquier compresión de código, aunque algunas herramientas de compresión de código se combinarán con gzip con mayor eficacia.
Mi recomendación es ejecutar el código que va a comprimir a través de varios compresores (una herramienta de comparación automatizada como CompressorRater ayuda ...), y elegir en base a los resultados - recordando a probar, el perfil y compare los tiempos de carga de la página real después.
Como usuario de Mootools, veo que Mootools ha reemplazado a Dean Edwards 'Packer por YUI Compressor. También recuerdo que hubo una discusión en Ajaxian.com donde Julien (autor del compresor) señaló las áreas donde YUI Compressor lo hizo mejor. Utilicé Compressor y nunca he visto ningún problema, pero nunca he estudiado a qué produce menos errores al ofuscar.
El compresor YUI se comprime de forma más segura y compacta que Packer. Creo que Packer necesita el JavaScript para estar perfectamente formado, de lo contrario causará un error de JavaScript cuando se cargue el script. Aún así, independientemente de cuál use, obtendrá el mayor aumento de rendimiento al comprimir su archivo Gz.
Una gran manera de comparar las mejores compresores es The JavaScript CompressorRater por Arthur Blake.
Lo que está por lo general interesa es el tamaño después de comprimir con gzip (se debe configurar el servidor web para realizar la compresión).
Los mejores resultados son por lo general de la YUI Compressor o Dojo ShrinkSafe. Las diferencias eran tan pequeñas que después de un tiempo dejé de comparar y solo uso el compresor YUI.
EDIT: desde el momento original en que se formuló esta pregunta, se han lanzado 2 nuevos minificadores. Ambos son al menos tan buenos como el YUI Compressor, si no mejor que ellos.
- Google Closure Compiler. Incluye un agresivo modo advanced optimization que a veces se aplica.
- de Microsoft Ajax Minifier (búsqueda this page para "Minifier")
EDIT 2:
- UglifyJS, elegido por el equipo de jQuery para el 1,5 lanzamiento oficial
Definitivamente echa un vistazo a Dojo Shrinksafe. Fue revisado recientemente y aparentemente el rendimiento ha sido mejorado.
+1 porque no tengo que descargarlo como el de Yahoo. –
También hay un puerto de YUICompress for .NET (que incluye una tarea de compilación para TFS) en Codeplex.
Esta es una vieja pregunta y el Google Closure Compiler no existía entonces. No lo he usado todavía, pero parece realmente bueno.
Divulgación completa, estoy detrás de esto: http://www.toptensoftware.com/minime que hace la minificación, la ofuscación y un conjunto razonable de controles de estilo de pelusa. Actualmente produce un rendimiento menor que Yui, no tan bueno como Closure.
- 1. ¿Por qué CLng produce resultados diferentes?
- 2. ¿Por qué JavaScript divide() produce resultados diferentes con diferentes nombres de variables?
- 3. Typo produce resultados inesperados en PHP
- 4. ¿Por qué (! [] + []) [+ !! [] + []] produce "a"
- 5. Dinámico vs Typed produce resultados extraños
- 6. Escribir un ayudante que produce resultados vinculados?
- 7. Ruby equivalente a encodeUROM de JavaScriptComponente que produce resultados idénticos?
- 8. Crear un objeto dos veces produce resultados diferentes
- 9. ¿Hay alguna biblioteca de Java para la generación de miniaturas?
- 10. Miniaturas FLV
- 11. returnValueMap de PHPUnit no produce los resultados esperados
- 12. Mejores prácticas de Javascript
- 13. ¿Qué es una biblioteca precompilada de JavaScript?
- 14. Mejores prácticas para escribir widgets de JavaScript
- 15. Obteniendo los mejores resultados en un JOIN
- 16. instanciaof produce resultados inconsistentes para la detección de interfaces?
- 17. ¿Cuándo ++ no produce los mismos resultados que +1?
- 18. `svn merge` produce resultados diferentes que` diff` SVN
- 19. ¿por qué este algoritmo aleatorio simple produce resultados parciales? ¿Cuál es una razón simple?
- 20. Miniaturas de video en Java
- 21. ¿Por qué mi regex.test Javascript() alternando dar resultados
- 22. Mejores prácticas para las referencias de JavaScript de IntelliSense
- 23. Javascript creación de objetos mejores prácticas
- 24. ¿Qué biblioteca de JavaScript de Box2D debería usar?
- 25. Biblioteca de enrutamiento para Javascript?
- 26. Mejores prácticas de lanzamiento de la biblioteca de Python
- 27. Cómo obtener mejores resultados de suavizado en El Cairo (ejemplos mostrados)
- 28. ¿La manera más eficiente de crear miniaturas?
- 29. Análisis de código Javascript y mejores prácticas
- 30. ¿Número de biblioteca de JavaScript?
por lo general es una buena idea para el rendimiento del tiempo y ver el efecto, pero en el caso de JSMin, Dojo ShrinkSafe, y el compresor YUI sólo disminuir el tamaño de archivo (sustituir símbolos, retire código muerto) - que no modifican la comportamiento. El empacador de Dean Edward aumenta el tiempo de procesamiento. – orip