Алгоритм, используемый для минимизации файла JS на основе Jquery?

У меня есть несколько вопросов, касающихся файла JS на основе Jquery:

1) Какой алгоритм используется для минимизации js-файлов?
2) Легко ли реализовать этот алгоритм программно?
3) Является ли минификация js обратимым процессом? т.е. можем ли мы получить оригинальный файл js из уменьшенного файла js? Если да, то есть ли тот же алгоритм, чтобы унифицировать его?

Пожалуйста помоги.

3 ответа

Решение
  1. Чтобы минимизировать JS:

http://dean.edwards.name/packer/
http://crockford.com/javascript/jsmin
http://code.google.com/intl/pl/closure/compiler/
http://developer.yahoo.com/yui/compressor/
http://ajaxmin.codeplex.com/

  1. Вы можете написать algo для минимизации своих js самостоятельно, но для этого было бы лучше использовать любой из вышеперечисленных инструментов. Причина в том, что они уже обеспечивают хорошее минирование, и они проверены временем

  2. Минификация - это обратимый процесс. Поскольку браузеры могут понимать только javascript, эти алгоритмы должны быть обратимыми. и поэтому другие могут также обратить минификацию.

Алгоритмы минификации

Согласно вики
Оптимизаторы JavaScript, такие как JSMin 1 и Packer[2], специально разработаны для современных технологий веб-программирования и способны понимать и сохранять условные комментарии и тому подобное. Например, Packer может при желании Base64 сжимать данный исходный код способом, который может быть распакован обычными веб-браузерами, а также сокращать имена переменных, которые обычно составляют от 5 до 10 символов, до одной буквы, что уменьшает размер файла скрипта и, следовательно, ускоряет загрузку.[3] Google выпустил свой компилятор Closure, который также обеспечивает минимизацию, а также возможность более агрессивного переименования, удаления мертвого кода и добавления функций.[4] Кроме того, некоторые онлайн-инструменты, такие как Microsoft Ajax Minifier[5], Yahoo! YUI Compressor или Pretty Diff[6] могут сжимать CSS-файлы. [Цитата нужна] Существует сценарий PowerShell с именем "minifyPS"[7], который способен сжимать как код сценария PowerShell, так и код JavaScript.

Легко ли реализовать этот алгоритм программно
- Все должно быть легко, если вы правильно знаете, как это сделать.

Является ли минификация JS обратимым процессом?
- Да, есть несколько украшений javascript, которые украсят минимизированный JS, но формат может быть не очень читабельным.

3: Сокращение не обратимо в типичном значении слова. Минифицированная программа просто должна вести себя идентично не минимизированной программе (не считая времени выполнения).

Вы не можете воспроизвести макет, каким он был: пробелы или комментарии, фактически используемые имена переменных или круглые скобки. Также возможно, что некоторые минифайеры выполняют постоянную оценку (т. Е. 1,0*(1,0+1,0) может стать 2 или 2); Невозможно воспроизвести удаленный мертвый код. (т.е. этот блок удален)

if (0==1) { // TODO: why isn't this working?
  i++
  alert('');
}

2: нет, это совсем не просто

Даже самый первый этап удаления пробелов и комментариев может выходить за рамки окончательного задания программирования 101.

Другие вопросы по тегам