Я закончил разработку бета-версии своего оптимизатора загрузки JavaScript — jWidget SDK.
github.com/enepomnyaschih/jwsdk/wiki
jWidget SDK — это небольшой скрипт, сборщик (прекомпилятор) вашего JavaScript. Это обертка вокруг YUICompressor, которая автоматизирует сборку проекта и дает очень гибкую конфигурацию. Инструмент совместим с любой архитектурой сервера, со всеми JavaScript-фреймворками. Инструмент бесплатный, с открытым исходным кодом и имеет лицензию LGPL.
Инструмент успешно протестирован на нескольких коммерческих проектах с разной серверной архитектурой. В том числе (не имею права дать ссылки):
— Чистый веб-сервис на Java + AJAX + JS. Особенность приложения: весь-весь-весь контент рендерится динамически через JavaScript, и приложение грузится почти мгновенно благодаря браузерному кэшированию
— Один шахматный клиент на jQuery, встроенный в сайт на Zend Framework
— Клиент одного приложения на Adobe Air
Суть в следующем: настроив SDK определенным образом, вы получаете возможность собрать свое приложение в одном из двух режимов: отладочный и релизный. Когда приложение загружается в браузере после сборки в отладочном режиме, вы увидите в разделе <head> вашего HTML все исходные JS-файлы, в которых можно ставить точки останова и производить отладку. Когда приложение загружается в браузере после сборки в релизном режиме, вы увидите в разделе <head> вашего HTML сжатые MIN.JS-файлы, что существенно ускоряет загрузку. Кроме того, SDK предупреждает кеширование измененных исходных файлов, а также дает специальный механизм конфигурации внешних сервисов (вроде Google Analytics) и статического подключения ресурсов (TXT, JSON, HTML) к вашему JS-коду.
Я не могу найти существенных недостатков в выбранной мной архитектуре, которые присутствуют в изобилии в других архитектурах, таких как динамическая загрузка скриптов, PHP-подключение скриптов и прекомпиляция приложения с помощью Sencha SDK. Текущая реализация имеет несколько ограничений, но они будут исправлены в будущих версиях.
Познакомиться с jWidget SDK, узнать все его возможности, сравнительные характеристики с другими инструментами для оптимизации загрузки JavaScript, посмотреть пример вы сможете в Вики проекта: github.com/enepomnyaschih/jwsdk/wiki
Очень жду ваших комментариев. Готов улучшить jWidget SDK по отзывам пользователей. Очень рекомендую использовать на всех без исключения проектах, где есть JavaScript. Если возникнут вопросы — обращайтесь через GitHub или пишите в комментариях, буду рад помочь.
Известные баги:
— Отсутствует мультиязыковая поддержка в JSON-файлах конфигурации
Ожидается в следующих версиях:
— Перекомпиляция только измененных исходных файлов
— Сжатие и оптимизация CSS
— Inline-метатеги в комментариях внутри JS-файлов: <jwinclude> для подключения JS-файлов, <jwdebug> для вывода отладочной информации приложения и assert'ов только в отладочной версии приложения
Автор: enepomnyaschih