Задать вопрос
@GdprYuiod

Как динамически подключать/отключать модули микрофронтенда на продакшене?

Есть веб приложение (react, ts, webpack5), которое устанавливается на множество различных серверов. У этого приложения есть несколько модулей (react-компонентов), которые обеспечивают ему какую-то функциональность (если грубо - отдельные страницы, доступные из меню). И мы на момент сборки не знаем какие модули потребуются для очередной инсталляции.

При каждой инсталляции на сервер, приложению требуется свой набор доступных модулей. Необходимо сделать так, чтобы состав этих модулей можно было менять без пересборки всего приложения.

Как это делается сейчас - собирается (webpack 5) приложение со всеми модулями внутри, устанавливается в таком виде на сервер и потом, на нужном сервере с помощью ручной правки файла конфига, либо какой-то бизнес-логики необходимые модули показываются или скрываются от пользователя.

Как хочется: Собрать отдельно хост-приложения с базовой функциональностью, собрать по-отдельности все модули.
Установить хост-приложение на сервер, установить отдельно нужные модули, чтобы они стали доступны в хост-приложении. В нашем случае установка делается через deb-пакеты.

Я это вижу примерно так, что модули при установке регистрируются у серверного процесса (или просто кладут свой конфиг в спец директорию). Хост-приложение в момент инициализации запрашивает у бэкенда список зарегистрированных модулей + их конфиги (название, ссылка на js-файл и т.д.)
Потом хост-приложение добавляет эти модули в меню, добавляет правила для роутинга, делает ленивый импорт js каждого модуля и отображает содержимое на нужной странице.

И вот, момент с загрузкой стороннего js, чтобы затем отобразить его, вызывает вопросы. Может есть решения для подобной задачи?
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
25 дек. 2024, в 08:00
20000 руб./за проект
25 дек. 2024, в 07:53
20000 руб./за проект
25 дек. 2024, в 07:45
20000 руб./за проект