Сжатие нескольких файлов JavaScript в отдельные файлы - PullRequest
0 голосов
/ 28 марта 2012

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

У меня есть проект, в котором есть общие сценарии (jQuery и несколько других) и страницы.jQuery Mobile позволяет вам кэшировать обычные сценарии во время сеанса, загружая все, что находится в <head> только один раз.Конкретные сценарии извлекаются только в том случае, если страница загружается, пока вы вставляете <script> в <div data-role="page">.

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

Однако, это ужасно для минимизации, потому что существуют зависимости между различными файлами, которые не могут быть объединены.

Пока я нашел дварешения, которые меня не устраивают:

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

(исключаю вручнуюочевидно, меняя имена функций;))

Я ищу компрессор, который мог быНи один из них:

  • сжимает все файлы вместе, но выводит их в отдельные файлы, чтобы сохранить модульность
  • , если это невозможно, сжимать файлы независимо друг от друга, но с тегами, которые могутзапретить минимизатору переименовывать ссылки на внешние функции или переменные (например, jQuery)

Существует ли он?

1 Ответ

0 голосов
/ 27 апреля 2012

Познакомившись со всем этим, Google Closure Compiler может сделать это (и многое другое).

Нужно определить внешние значения для:

  • третьегоиспользуемая вами библиотека вечеринок (jQuery, jQuery Mobile ...).Вы можете найти некоторых из них .
  • самодельных скриптов, которые вы загружаете отдельно

Очевидно, если вы сжимаете самодельные скрипты, которые загружаются отдельноВы должны экспортировать переменные, которые вы хотите использовать в другом месте, используя следующую технику ( подробно описано в документации по Closure Compiler ):

/**
 * A function you want to be able to call from elsewhere after compressing
 * @param {string} a
 */
function exportedFunction(a) {alert(a);}

window['exportedFunction'] = exportedFunction;

Затем вы можете сжимать нужные файлы в пакетном режиме или по отдельности.Это настолько мощный инструмент, что я не могу поверить, что раньше не использовал его.

...