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