Как минимизировать различные файлы JavaScript во время выполнения, используя Java - PullRequest
9 голосов
/ 30 апреля 2011

Я пытаюсь создать (или найти существующий, который я могу использовать) веб-фильтр, который сжимает файл JavaScript во время выполнения.Я пытался создать один на основе YUICompressor, но я получаю странные ошибки из него, когда я пытаюсь передать в него источник на основе String вместо реального файла.

Теперь я ожидаю получитьзавалены ответами типа «Сжатие / минимизация в реальном времени - плохая идея», но есть причина, по которой я не хочу делать это во время сборки.

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

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

Если его нет, я ищу советы о том, что я могу использовать в качестве строительных блоков.YUICompressor не совсем понял меня, и GoogleClosure кажется только веб-API.

Приветствия, Питер

Ответы [ 2 ]

2 голосов
/ 30 апреля 2011

Взгляните на JavaScript Minifier от Дугласа Крокфорда.Источник здесь: JSMin.java.Это не фильтр, а содержит только код для минимизации.Мы превратили его в фильтр, который объединяет и минимизирует JavaScript на лету.Это работает хорошо, особенно если у вас есть браузеры и результаты кеширования CDN.

Обновление: Я не учел, что мы также кешируем их на сервере.Они восстанавливаются только в том случае, если какие-либо активы, необходимые для создания объединенной и минимизированной продукции, изменились.По сути, вместо того, чтобы «компилировать» их во время сборки, мы обрабатываем каждую комбинацию один раз во время выполнения.

0 голосов
/ 30 апреля 2011

У меня уже есть фильтр, который объединит запрошенные файлы и все зависимости, еще не загруженные в один ответ?

(И да, сжатие на лету ужасно дорого, и определенно не стоит делать для каждого .js файла, обслуживаемого)

...