Поведение упаковщика, компрессора YUI и т.д.

#javascript #yui-compressor #packer

#javascript #yui-компрессор #упаковщик

Вопрос:

Я пытаюсь понять, как работают все эти инструменты, поскольку, насколько я знаю, они меняют имена переменных для достижения лучшего сжатия.

Изменяют ли они также название свойств объектов? Я думаю, они этого не сделали бы, поскольку в противном случае все, использующее object[property] обозначение, где property вычисляется динамически, могло бы завершиться неудачей. Правильно ли это?

Итак, в этом случае, если все пространство имен имеет только одну глобальную переменную, изменение имен переменных не принесет никакой пользы. Это снова верно?

Ответ №1:

Упаковщик выполняет определенную форму сжатия, заменяя обычные слова более короткими символами. Он вообще не выполняет переименование.

Такие инструменты, как YUI Compressor, изменяют только локальные переменные (и аргументы), но вы можете хранить часто используемые объекты в локальных переменных, чтобы воспользоваться преимуществами пространства. (Кроме того, доступ к локальным переменным немного быстрее, чем сканирование цепочки областей видимости до верхнего уровня.)

Ответ №2:

Переименовывать можно только локальные переменные

Ответ №3:

YUI Compressor может минимизировать JavaScript и каскадные таблицы стилей.

Он также может дополнительно запутывать.. но только Javascript.

чтобы объяснить различия

минимизация: удаляет пробелы и комментарии.

запутывание: также сокращается, но оно также вносит изменения в программу, изменяя имена переменных, функций и членов, что значительно усложняет понимание программы и в придачу еще больше уменьшает ее размер

Итак, почему мы уменьшаем или запутываем? Уменьшить размер файла, сохранив точно такую же функциональность.

Комментарии:

1. @andrea хех — симпатичный.. вы прочитали мой ответ???? посмотрите на два выделенных жирным шрифтом раздела…. Кроме того, я прокомментировал только YUI Compressor .. не Packer, потому что я никогда им не пользовался.

2. Согласно другим ответам, то, что вы написали, неверно: не каждое имя переменной будет изменено, только локальные. Я уже знаю, что такое минимизация и запутывание; мой вопрос был специфичен для поведения этих инструментов в отношении свойств объекта. Извините, если мой комментарий был слишком резким.