Должны ли микрофронтенды использовать общие данные?
Продвинутые темы
Микрофронтенды могут использовать общие данные, но это нужно делать осторожно: чрезмерная общность нарушает их независимость. Общее состояние минимизируют и передают через явные контракты.
Дилемма
Микрофронтенды — способ разбить крупное приложение на независимые части, разрабатываемые и деплоящиеся отдельно. Их сила в независимости, поэтому общие данные — риск связанности.
Когда общие данные нужны
Некоторые данные объективно общие:
- Авторизованный пользователь, токен.
- Тема, локаль.
- Корзина (в e-commerce), между несколькими микрофронтендами.
Как делать правильно
Минимизировать общее
Делить только действительно общие данные, остальное — локально в каждом микрофронтенде.
Явные контракты
Обмениваться через чёткие интерфейсы, а не общий мутабельный store:
- События (event bus,
CustomEvent). - Общий модуль/сервис (shared library) с явным API.
- URL/query-параметры для состояния.
- Props при композиции.
Избегать тесной связанности
Не делать общий глобальный store, от которого зависят все — это превращает микрофронтенды в монолит.
Риски чрезмерной общности
- Потеря независимого деплоя (изменение общих данных ломает всех).
- Конфликты версий общего кода.
- Сложность отладки распределённого состояния.
Коротко для собеседования
Микрофронтенды могут использовать общие данные (пользователь, тема, корзина), но общность минимизируют, чтобы сохранить независимость. Обмениваются через явные контракты (события, shared-сервис с API, URL, props), а не общий мутабельный store. Чрезмерная общность превращает микрофронтенды в монолит и ломает независимый деплой.