Закрытие компилятора с помощью jquery - PullRequest
5 голосов
/ 06 декабря 2010

Мне удалось создать js-приложение небольшого размера, которое использует jQuery и jQuery UI, используя компилятор Google Closure с расширенной оптимизацией. Просто для ясности: я не скомпилировал сам jQuery, просто мое приложение, которое использует jquery. Я хотел бы знать, может ли кто-нибудь подтвердить, что эта идея также работает для больших и более сложных приложений.

Процедура следующая:

0.- У вас есть html-файл, который вызывает jquery-1.4.3.min.js, test1.js и test2.js

1.- скомпилируйте ваше приложение и экспортируйте файл карты свойств

java -jar closure-compiler.jar \
       --compilation_level ADVANCED_OPTIMIZATIONS \
       --js test1.js --js test2.js \
       --property_map_output_file prop.out > min.js

Карта свойств - это файл ключа / значения, который содержит имя свойства до и после компиляции:

aprop:a
html:b
each:c

2.- Скопируйте prop.out в prop.in и отредактируйте его так, чтобы свойства (функции) jQuery были заменены на одно и то же имя (это можно легко автоматизировать с помощью функции jquery для списка):

aprop:a
html:html
each:each

3.- Перекомпилировать, используя prop в качестве входных данных карты свойств

java -jar closure-compiler.jar \
       --compilation_level ADVANCED_OPTIMIZATIONS \
       --js test1.js --js test2.js \
       --property_map_input_file prop.in > min.js

4.- Теперь в вашем html включите min.js и jquery-1.4.3.min.js. Приложение должно быть функциональным, но ваш код должен быть быстрее и меньше.

Это минимизирует ваш код, а не jquery.

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

Спасибо

хег

1 Ответ

3 голосов
/ 07 декабря 2010

Рассматривали ли вы использование externs . Насколько я знаю, это способ избежать сокращения методов jQuery в вашем коде. Внешние элементы для jQuery существуют как вклады в проект закрытия.

Для jQuery UI вы можете попробовать this . Я с этим однажды сталкивался, но сам не проверял

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

...