Вопрос проверяет понимание принципов изоляции микрофронтендов и способов избежать конфликтов между независимо развёртываемыми приложениями на одной странице.
Микрофронтенды — это подход, при котором большое фронтенд-приложение разбивается на несколько независимых частей, каждая из которых разрабатывается и деплоится отдельной командой. Главная сложность — заставить эти части работать вместе на одной странице, не мешая друг другу. Именно для этого применяются механизмы изоляции.
Самый популярный способ — Module Federation в Webpack 5. Он позволяет одному приложению (host) динамически подгружать код другого (remote) во время выполнения, при этом каждый сохраняет свою сборку и версии зависимостей.
// webpack.config.js (remote)
module.exports = {
name: 'products',
filename: 'remoteEntry.js',
exposes: {
'./ProductList': './src/ProductList',
},
shared: { react: { singleton: true } },
};
// host
remotes: {
products: 'products@http://localhost:3001/remoteEntry.js',
}
Для полной изоляции стилей и DOM применяют Shadow DOM: каждый микрофронтенд рендерится в отдельный shadow root, и его CSS не протекает наружу. Альтернатива — iframe, но он тяжелее и усложняет коммуникацию.
Для изоляции JS-скоупа используют sandbox-обёртки (например, в single-spa) или ES-модули, которые не пишут в глобальный объект. Общение между приложениями строится через явные контракты: Custom Events, общий event bus или props от host-приложения.
Итог: независимость микрофронтендов достигается комбинацией изоляции сборки (Module Federation), стилей (Shadow DOM, CSS Modules), JS-скоупа (sandbox, модули) и явных контрактов взаимодействия. Применять этот подход стоит в крупных проектах, где несколько команд должны деплоить фронтенд независимо друг от друга.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию