Оптимизатор загрузки JavaScript

в 10:39, , рубрики: javascript, архитектура, Веб-разработка, оптимизация, метки: , , ,

Я закончил разработку бета-версии своего оптимизатора загрузки 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


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js