YUI Compressor comprime contenido JavaScript que incluye:
- Eliminar comentarios
- Eliminar espacios adicionales
- Optimización menor
- Reemplazo del identificador
¿Qué optimizaciones sutiles incluye YUI Compressor?
- object["property"] , si el nombre de la propiedad es un identificador legal de JavaScript (nota: un identificador legal de JavaScript comienza con una letra, seguida opcionalmente por una o más letras, números o guiones bajos) y no son palabras reservadas, se optimizará a: objeto.propiedad
- {"property":123}, si el nombre de la propiedad es un identificador legal de JavaScript y no es una palabra reservada, se optimizará para {property:123} (Nota: en literales de objeto, si el nombre de la propiedad es un identificador legal de JavaScript y no es una palabra reservada y no requiere citar nombres de propiedades).
- 'abcd'efgh', se optimizará a "abcd'efgh".
- "abcd" + "efgh", si las cadenas están conectadas, se optimizará a "abcdefgh" (Nota: todo bajo la premisa de usar YUI Compressor, para conexiones de cadenas en scripts, la eficiencia y la eficiencia de usar el conector "+" son máxima mantenibilidad).
La optimización de la compresión más eficaz para JavaScript es la sustitución del identificador.
Por ejemplo:
(función(){
función agregar(núm1, núm2) {
devolver número1 + número2;
}
})();
Después de reemplazar el identificador de género:
(función(){
función A(C, B) {
devolver C+ B;
}
})();
Después de eliminar los espacios adicionales, terminamos con:
(función(){función A(C,B){retorno C+B;}})();
El reemplazo del identificador de YUI Compressor solo reemplaza los nombres de funciones y nombres de variables, entonces, ¿qué no se puede reemplazar?
- Valores primitivos: cadena, booleano, número, nulo e indefinido. En términos generales, las cadenas ocupan la mayor parte del espacio, seguidas de los literales no numéricos (verdadero, falso, nulo, insuficiente).
- Variables globales: ventana, documento, XMLHttpRequest, etc. Los más utilizados son documento y ventana.
- Nombre del atributo, como por ejemplo: foo.bar. El espacio ocupado es superado solo por las cadenas. El operador "." no se puede reemplazar y abc consume más espacio.
- Palabras clave. Las palabras clave que a menudo se usan en exceso son: var, return. El mejor método de optimización: las palabras clave var y return aparecen solo una vez en una función.
El tratamiento de optimización para valores primitivos, variables globales y nombres de atributos es aproximadamente el mismo: cualquier valor literal, variable global o nombre de atributo utilizado más de 2 veces (incluidas 2 veces) debe reemplazarse por almacenamiento de variables locales.
Sin embargo, existen algunas situaciones en las que está prohibida la sustitución de identificadores:
- Utilice la función evaluar(). Solución: No utilice ni cree una función global que encapsule eval().
- Utilice la declaración with. Solución: El método es el mismo que el anterior.
- Comentarios condicionales para JScript. La única solución: no usarlo.
Dado que YUI Compressor se basa en el intérprete de rhino , todas las optimizaciones anteriores son seguras.
Lectura adicional:
"Compresión extrema de JavaScript con YUI Compressor"
original:
http://www.planabc.net/2009/08/02/javascript-compression_with_yui_compressor/