Знакомы ли с модульным федеративным плагином для микрофронтов
Что проверяют
Работали ли вы с Module Federation руками или только читали о нём: знаете ли, что такое хост, remote и shared, и какие ошибки вылезают в первый же день. Следом обычно спрашивают, как вы делили React между приложениями и что происходит, если remote недоступен.
Как отвечать
Module Federation это механизм, появившийся в webpack 5 как ModuleFederationPlugin: одна сборка (хост) загружает модули другой сборки (remote) в рантайме, без публикации в npm и пересборки хоста. Ключевые поля конфига:
nameиfilename: имя контейнера и точка входа, обычноremoteEntry.js, которую хост скачивает первой;exposes: какие модули remote отдаёт наружу, например./Checkout;remotes: откуда хост берёт чужие контейнеры;shared: общие зависимости. Для React и роутера ставятsingleton: trueиrequiredVersion, иначе на странице окажутся две копии.
Сегодня это уже не только webpack. Есть Module Federation 2.0 (@module-federation/enhanced) с манифестом, рантайм-плагинами и генерацией типов для remote, встроенная поддержка в Rspack и плагин для Vite. Отдельно существует single-spa: это оркестратор, который монтирует приложения по маршрутам, и его можно сочетать с федерацией.
Опыт подавайте конкретно: сколько было remote, что в них вынесли, как делили дизайн-систему, как деплоили и кэшировали remoteEntry.js. Если не работали, скажите честно и покажите понимание: «в проде не использовал, собирал учебный пример с хостом и двумя remote, упёрся в ошибку eager consumption и разобрался с асинхронной точкой входа».
Где спотыкаются
Не делают асинхронную границу. Без входа через import('./bootstrap') приложение падает с ошибкой Shared module is not available for eager consumption.
Забывают singleton для React. Две копии дают Invalid hook call и сломанный контекст между хостом и remote.
Не продумывают отказ. Remote живёт на своём деплое, и если он лёг, без React.lazy с Error Boundary и запасного интерфейса падает весь хост.