Динамическая загрузка пакетов

Крупные корпоративные приложения часто включают в себя миллионы строк кода и предлагают деление на отдельные пакеты. В зависимости от разграничения прав пользователей на отдельные пакеты, у пользователя либо есть права на работу с данным пакетом либо нет. По умолчанию приложение собирается в один app.js файл, который включает в себя все пакеты указанные в секции requires в app.json . Это означает что для тех пользователей которые не имеют прав на пакет, он все равно будет загружен, такой вот overhead. Лучший подход это использовать динамически загружаемые пакеты.

В сmd 6.5 добавилась поддержка динамической загрузки пакетов, которая позволяет серьезно улучшить время запуска приложения. Разработчик может реализовывать логику которая загружает пакеты по требованию — с любыми необходимыми зависимостями и условиями. Например, если у пользователя есть необходимые права на модуль, то он будет загружен.

Динамическая загрузка пакетов

Для примера создадим тестовый пакет NewDevCard

sencha generate package NewDevCard

Сделаем данный пакет динамически загружаемым, для этого добавим секцию uses в app.json.

"uses": [
     "NewDevCard"
]

И добавим использование загрузчика пакетов, для этого добавим в секцию requires package-loader в app.json. Данный пакет является remote, и сам скачается при сборке приложения из официального репозитория Sencha.

"requires": [
     "package-loader"
]

Теперь мы можем использовать метод Ext.Package.load() который загрузит указанный пакет.

// После необходимых проверок мы можем загрузить пакет
Ext.Package.load(pkg_name).then(function(pkg) {
    // Пакет загружен
});

Обратите внимание, что в cmd теперь необходимо использовать флаг -uses

sencha app build -uses production
sencha app watch -uses

Пример приложения использующего package-loader можно тут.

 

Один комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *