O YUI Compressor compacta conteúdo JavaScript, incluindo:
- Remover comentários
- Remover espaços extras
- Otimização menor
- Substituição de identificador
Que otimizações sutis o YUI Compressor inclui?
- object["property"] , se o nome da propriedade for um identificador JavaScript legal (observação: um identificador JavaScript legal começa com uma letra, opcionalmente seguida por uma ou mais letras, números ou sublinhados) e não for palavras reservadas, será otimizado para: objeto.property
- {"property":123}, se o nome da propriedade for um identificador JavaScript legal e não for uma palavra reservada, ele será otimizado para {property:123} (Observação: em objetos literais, se o nome da propriedade for um identificador JavaScript legal e não é uma palavra reservada e não requer a citação de nomes de propriedades).
- 'abcd'efgh', será otimizado para "abcd'efgh".
- "abcd" + "efgh", se strings estiverem conectadas, será otimizado para "abcdefgh" (Nota: Tudo sob a premissa de usar o YUI Compressor, para conexões de strings em scripts, a eficiência e eficiência do uso do conector "+" são maior manutenibilidade).
A otimização de compactação mais eficaz para JavaScript é a substituição do identificador.
por exemplo:
(função(){
função adicionar(num1, num2) {
retornar num1 + num2;
}
})();
Depois de substituir o identificador do gênero:
(função(){
função A(C, B) {
retornar C + B;
}
})();
Depois de remover os espaços extras, ficamos com:
(função(){função A(C,B){retorno C+B;}})();
A substituição do identificador do compressor YUI substitui apenas nomes de funções e nomes de variáveis, então o que não pode ser substituído?
- Valores primitivos: string, booleano, número, nulo e indefinido. De modo geral, as strings ocupam mais espaço, seguidas por literais não numéricos (verdadeiro, falso, nulo, subdescoberto).
- Variáveis globais: janela, documento, XMLHttpRequest, etc. Os mais comumente usados são documento e janela.
- Nome do atributo, como: foo.bar. O espaço ocupado perde apenas para strings. O operador "." não pode ser substituído e abc consome mais espaço.
- Palavras-chave. Palavras-chave frequentemente usadas em demasia são: var, return. O melhor método de otimização: as palavras-chave var e return aparecem apenas uma vez em uma função.
O tratamento de otimização para valores primitivos, variáveis globais e nomes de atributos é praticamente o mesmo: qualquer valor literal, variável global ou nome de atributo usado mais de 2 vezes (incluindo 2 vezes) deve ser substituído por armazenamento de variável local.
No entanto, existem algumas situações em que a substituição do identificador é proibida:
- Use a função eval(). Solução: Não use ou crie uma função global encapsulando eval().
- Use a instrução with. Solução: O método é o mesmo acima.
- Comentários condicionais para JScript. A única solução: não use.
Como o YUI Compressor é construído no interpretador rhino , todas as otimizações acima são seguras.
Leitura adicional:
"Compressão JavaScript extrema com compressor YUI"
original:
http://www.planabc.net/2009/08/02/javascript-compression_with_yui_compressor/