YUI Compressor сжимает содержимое JavaScript, включая:
- Удалить комментарии
- Удалить лишние пробелы
- Незначительная оптимизация
- Замена идентификатора
Какие тонкие оптимизации включает в себя YUI Compressor?
- object["property"] , если имя свойства является допустимым идентификатором JavaScript (примечание: допустимый идентификатор JavaScript начинается с буквы, за которой может следовать одна или несколько букв, цифр или символов подчеркивания) и не является зарезервированными словами, будет оптимизировано в: объект.свойство
- {"property":123}, если имя свойства является допустимым идентификатором JavaScript и не является зарезервированным словом, оно будет оптимизировано до {property:123} (Примечание. В литералах объектов, если имя свойства является допустимым идентификатором JavaScript и не является зарезервированным словом и не требует цитирования имен свойств).
- 'abcd'efgh' будет оптимизирован до "abcd'efgh".
- «abcd» + «efgh», если строки соединены, будут оптимизированы до «abcdefgh» (Примечание: все при условии использования YUI Compressor, для соединений строк в сценариях эффективность и эффективность использования соединителя «+» являются высочайшая ремонтопригодность).
Самая эффективная оптимизация сжатия для JavaScript — замена идентификатора.
например:
(функция(){
функция add(num1, num2) {
вернуть число1 + число2;
}
})();
После замены идентификатора рода:
(функция(){
функция А(С, В) {
вернуть С+В;
}
})();
После удаления лишних пробелов получим:
(функция(){функция A(C,B){возврат C+B;}})();
Замена идентификатора YUI Compressor заменяет только имена функций и имена переменных, так что же нельзя заменить?
- Примитивные значения: строка, логическое значение, число, значение NULL и неопределенное значение. Вообще говоря, строки занимают больше всего места, за ними следуют нечисловые литералы (истина, ложь, значение NULL, недонайденный).
- Глобальные переменные: окно, документ, XMLHttpRequest и т. д. Наиболее часто используемые из них — document и window.
- Имя атрибута, например: foo.bar. Занимаемое пространство уступает только строкам. Оператор "." не может быть заменен, и abc занимает больше места.
- Ключевые слова. Ключевые слова, которыми часто злоупотребляют: var, return. Лучший метод оптимизации: ключевые слова var и return встречаются в функции только один раз.
Процедура оптимизации для примитивных значений, глобальных переменных и имен атрибутов примерно одинакова: любое буквальное значение, глобальная переменная или имя атрибута, использованное более 2 раз (включая 2 раза), должно быть заменено хранилищем локальных переменных.
Однако есть ситуации, когда подмена идентификатора запрещена:
- Используйте функцию eval(). Решение. Не используйте и не создавайте глобальную функцию, инкапсулирующую eval().
- Используйте оператор with. Решение: Метод тот же, что и выше.
- Условные комментарии для JScript. Единственное решение: не используйте его.
Поскольку YUI Compressor построен на интерпретаторе Rhino , все приведенные выше оптимизации безопасны.
Дальнейшее чтение:
«Экстремальное сжатие JavaScript с помощью YUI Compressor»
оригинал:
http://www.planabc.net/2009/08/02/javascript-compression_with_yui_compressor/