¿Qué se usa para minimizar y comprimir bibliotecas de JavaScript?¿Qué se usa para minimizar y comprimir bibliotecas de JavaScript?
Respuesta
Yo uso YUI Compressor. ¡Parece hacer bien el trabajo!
En mi experiencia, YUI Compressor ha sido el más seguro, pero el más agresivo. –
YUIcompressor tiene algunos efectos secundarios negativos. Se incluye con una versión de Rhino quebrada que rompe cualquier javascript del lado del servidor con Rhino. – fforw
Agregue un enlace a esta versión en línea, si lo desea, a veces solo tengo 1 archivo que quiero convertir rápidamente. http://www.refresh-sf.com/yui/ – Marko
Dean Edward's packer logra unas relaciones de compresión bastante buenas. Tiene implementaciones de línea de comandos que le permiten ser utilizado en un proceso de integración continua.
Se ha demostrado que el empacador es peor que la compresión normal, debido a la sobrecarga de desempaquetar en el navegador. – Magnar
Utilizo un script de envoltura simple (3-4 líneas) alrededor de JavaScript::Minifier::XS.
He intentado el compresor YUI antes, pero me da un mensaje de error.
sugiere emplear JSMin a minify su javascript:
Douglas Crockford es el arquitecto de Javascript en Yahoo. Creo que él es el arquitecto del compresor YUI. – Swanand
No. Doug trabaja para Yahoo pero fue el creador de JSMin. El compresor YUI fue creado por Julien Lecomte. Está escrito en Java - No creo que Doug vuelva a escribir Java otra vez :) – johnhunter
Yo también uso YUI Compressor. Tengo una tarea de hormiga como este que yo uso en mis proyectos:
<!--
YUI Compressor tasks
http://www.julienlecomte.net/yuicompressor/README
-->
<property name="yuicompressor.jar"
value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/>
<target name="js.compress">
<!-- Create min directory under js direcrtory if it doesnt exist -->
<mkdir dir="${js-directory}/min" />
<apply verbose="true" executable="java" parallel="false" failonerror="true">
<fileset dir="${js-directory}" includes="*.js"/>
<arg line="-jar"/>
<arg path="${yuicompressor.jar}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/>
<targetfile/>
</apply>
</target>
No minimizar JavaScript en absoluto: la compresión gzip es lo suficientemente bueno para mí y tiene la ventaja adicional de que los mensajes de error serán útiles.
+1 Minimizar el código de cambios y * puede * introducir errores. – mark
Claro, pero todavía le da un beneficio extra más allá de gzipping solo. Solo asegúrate de hacer todas tus pruebas con la versión minimizada. –
¿Y qué ocurre con los usuarios que tienen protección antivirus o por algún otro motivo están bloqueando enableGzip? – Louis
Aquí es un artículo que describe cómo utilizar YUI Compresor para reducir al mínimo los archivos durante la construcción: Compressing JS files as part of your build process
he utilizado YUI Compressor durante mucho tiempo y no he tenido problemas con él, pero recientemente se han empezado a utilizar y Google Closure Compiler tenido algún éxito con eso. Mis impresiones hasta el momento:
- En general, supera a YUI Compressor en términos de reducción de tamaño de archivo. Por una pequeña cantidad en modo simple, y mucho en modo avanzado.
- El modo simple ha sido hasta ahora tan confiable como el compresor YUI. Nada de lo que he alimentado ha mostrado ningún problema.
- El modo de "compilación" avanzado es ideal para algunas secuencias de comandos, pero la reducción de tamaño dramático de la secuencia de comandos se produce a expensas de una gran cantidad de intromisión en el código que tiene una buena probabilidad de romperlo. Hay ways to deal with some of these problems y entender lo que hace puede ser de gran ayuda para evitar problemas, pero generalmente evito usar este modo.
Pasé al uso del compilador de cierres de Google en el modo simple de "compilación", ya que supera ligeramente al compresor YUI en general. Lo he usado mucho menos que con YUI Compressor, pero por lo que he visto hasta ahora, lo recomendaría.
Otro que aún tengo que probar pero parece prometedor es Mihai Bazon's UglifyJS.
Google Closure Compiler es el que recomendaría absolutamente. Como tú, el modo simple acaba de funcionar ... sin problemas. – Adam
http://code.google.com/p/jsmin-php/
El bueno de Doug Crockford :-) La belleza de esto es que con el control de caché puede obtener la compresión somelovely automatizado sólo cuando es necesario. O en uno de mis proyectos, solo imprimo los archivos comprimidos/gzip y los borro cuando realizo un cambio. Para un entorno de desarrollo, simplemente no llamo al script de minificación.
Uso el JavaScript :: Minifier de perl. Funciona bastante bien y puedes, por ejemplo, reemplace algunas frases usando perl.
UglifyJS es uno nuevo.
UglifyJS comprime mejor que YUI Compresor y casi a la par con la Cierre Compilador Google. Para el ejemplo , la versión comprimida de jQuery del compilador de Google es sólo 403 bytes más pequeña que la versión producida por UglifyJS - ¡impresionante! UglifyJS es también el más rápido para ejecutar por un tiro largo, superando ¡Cierre por más de 6 segundos!
Además, el código producido por UglifyJS es más seguro que el código que genera Closure. Por ejemplo, Cierre no sabe cómo tratar con eval o con {} - simplemente registra un error y continúa cambiando el nombre de las variables de todos modos. Esto, obviamente, lleva al código roto . UglifyJS no tiene este problema.
Más información se puede encontrar aquí: http://badassjs.com/post/971960912/uglifyjs-a-fast-new-javascript-compressor-for-node-js
¡Qué nombre tan brillante! –
closure herramientas de Google
Puede asignar la versión minified al código fuente regular para la depuración de Firebug con su complemento.
http://caja.appspot.com/tools/index hace los tres de HTML/CSS/JS.
Tienes una manada de posibilidades aquí:
- El YUI Compressor ha mencionado en otras respuestas,
- El Google Closure Compiler, ShrinkSafe compilador
- El Dojo ToolKit 's utilizados por sus buildsystem,
- Douglas Crockford 's todavía real JSMin,
- UglifyJS mencionado otros,
- y una solución comercial, javaScript Obfuscator (nunca utilizado personalmente)
Desde mi experiencia personal, yo recomiendo que utilice el SDK Dojo para construir una estructura de encargo, que luego se puede a su vez configure para usar su compilador habitual ShrinkSafe o Google Closure, which they now support as well.
En términos de compresión, creo que Google Closure es el que mejor rendimiento ha tenido hasta ahora, sin embargo, generalmente estoy satisfecho con ShrinkSafe y es un poco mayor y más robusto, mientras que Closure Compiler parece un poco nuevo niño en el barrio (que a los interesados podría no gustarles demasiado, por ejemplo).
Algunas personas juran solo por el compresor YUI sin embargo. Yo personalmente no puedo responder por eso.
Ahora bien, si usted pregunta era para comprimir bibliotecas y no sólo su propio código JavaScript, es obvio que se pone muy más complicado, ya que se necesita para la mayoría de estas herramientas para exportar los símbolos que no debe ser cambiado de nombre o despojados. La mayoría de los compresores decentes eliminarán las funciones que creen que no se usan, a menudo el caso de una biblioteca, si no está vinculado a un proyecto, obviamente, y cambian los nombres para acortarlos y usar menos caracteres, también un problema ya que obviamente quieres un público API para no ser manipulado.
Puede encontrar otros hilos sobre este tema también y encontrar información en la documentación de soporte de las herramientas. Es posible que también desee echar un vistazo a JSBuilder2, una especie de colgante de la herramienta Dojo's Build (por lo tanto, utilizando ShrinkSafe o Closure Compiler) para ExtJS (utilizando el compresor YUI).
(Lo sentimos, siendo un usuario nuevo SO, no puedo añadir más de un enlace por lo que no se puede conectar directamente a las herramientas.)
EDIT: en relación con las preocupaciones expresadas en algunas respuestas que la compresión puede introducir errores y que hace que la depuración sea más fácil ya que el código no se destruye: sí, es una preocupación válida. Sin embargo:
- obtendrá una mejora muy significativa en términos de ancho de banda si se utiliza un Minifier, incluso con la compresión gzip activado (y se puede aprender a aprovechar la compresión gzip, haciendo la vida del compresor más fácil
- que debiera simplemente pruebe su código en modo de depuración y producción para asegurar que el comportamiento sea idéntico. Es decir, también es parte de su trabajo ...
- algunos de estos compresores han existido por un tiempo y realmente no introducirán errores en su código. Realmente están reorganizando cosas y sustituyendo cadenas, de verdad.
- algunos compresores (para ejemplo, el sistema de compilación de dojo) vienen con opciones que le permiten producir tanto una salida comprimida como una salida sin comprimir, para que luego pueda habilitar diferentes modos para la depuración y producción, usando parámetros de consulta, por ejemplo.
Aquí hay una solución de Microsoft que puede integrar en Visual Studio para minimizar los archivos automáticamente cuando crea su proyecto.
instalar:
Descargar el msi de: http://aspnet.codeplex.com/releases/view/40584
Es posible que tenga que reiniciar el equipo después de su acabado.
de usar:
editar el archivo .csproj e incluyen lo siguiente al final del archivo (pero antes de la etiqueta </Project>
):
<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />
<Target Name="AfterBuild">
<ItemGroup>
<JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
<CSS Include="**\*.css" Exclude="**\*.min.css" />
</ItemGroup>
<AjaxMin
JsSourceFiles="@(JS)"
JsSourceExtensionPattern="\.js$"
JsTargetExtension=".min.js"
CssSourceFiles="@(CSS)"
CssSourceExtensionPattern="\.css$"
CssTargetExtension=".min.css"/>
</Target>
Ahora, cuando usted construye su proyecto, todos los archivos CSS y js que no terminan en .min.js, .min.css serán minificados (Ver el atributo "Excluir" para excluir que otros archivos sean miniados).
https://jawr.dev.java.net/ es excelente para la minimización y control de versiones
Hay una muy buena compresor en línea:
http://javascriptcompressor.com/
También puede reducir las variables, si quieres aún más descomprimidos.
creo que sirve
- 1. Comprimir (minimizar) HTML de python
- 2. ¿Para qué se usa + =?
- 3. ¿Cómo minimizar HTML con CSS y Javascript?
- 4. ¿Para qué usa IE // @ en javascript?
- 5. ¿Qué bibliotecas JavaScript multiplataforma existen?
- 6. ¿Para qué se usa Django?
- 7. ¿JSON se usa solo para JavaScript?
- 8. ¿Qué objeto JavaScript existen para mapear bibliotecas de objetos?
- 9. ¿Bibliotecas Javascript para anotar texto?
- 10. ¿Hay algún beneficio en minimizar JavaScript antes de descomprimirlo?
- 11. ¿Qué es GLIBC? ¿Para qué se usa esto?
- 12. GIT y SSH, ¿qué tecla se usa?
- 13. JavaScript: ¿Para qué se utilizan .extend y .prototype?
- 14. ¿Quieres minimizar javascript en línea durante la construcción de ASP.net?
- 15. ¿Cómo puedo averiguar qué bibliotecas usa un exe de Windows?
- 16. Cómo comprimir archivos usando JavaScript
- 17. ¿Qué es 'xmlhttp.setRequestHeader();' y en qué situaciones se usa?
- 18. ¿Qué es GenericParameterHelper y cómo se usa?
- 19. io_service, ¿por qué y cómo se usa?
- 20. IntelliSense para bibliotecas Ajax y JavaScript en Visual Studio
- 21. Puede comprimirse Javascript sin comprimir
- 22. ¿Para qué se usa Test-and-Set?
- 23. ¿Para qué se usa el auto =>?
- 24. Can Delphi JCL 7zCompression se usa para comprimir/descomprimir secuencias en memoria sin operaciones de archivos?
- 25. ¿Qué bibliotecas de JavaScript conocidas se encuentran en CDN y cuáles son las URL?
- 26. ¿Puedo comprimir datos en JavaScript?
- 27. ¿Qué versión de JavaScript usa Titanium?
- 28. .NET Minimizar en la bandeja Y Minimizar los recursos necesarios
- 29. ¿Qué es el "modo estricto" y cómo se usa?
- 30. Cómo deshabilitar Javascript cuando se usa Selenium?
partir de una recompensa para ver si hay nuevos acontecimientos ocurridos desde 2009. –
La forma en que la pregunta está redactada, que debería haber sido wiki de la comunidad. Cualquiera puede responder la pregunta (incluso si la respuesta es "nada"), y no puede haber respuestas incorrectas ... – Guffa