Репозиторий подготовлен как стартовый шаблон Native Federation на Angular, который умеет:
- грузить Angular remote через
@angular-architects/native-federation; - встраивать React remote через Web Components;
projects/shell— Angular shell (host).projects/angular-mfe— Angular remote (Native Federation remote).projects/react-mfe— полноценный React remote (Vite + TSX), который экспортирует custom element.
- Shell инициализирует Native Federation через
initFederation(...), после чего динамически вызываетloadRemoteModuleдля Angular remote. - Shell подгружает модуль React remote (
/src/remote-entry.tsx) и рендерит<react-mfe-widget>. - Благодаря Web Components можно подключать любые UI-микрофронтенды независимо от фреймворка.
Запуская локально соблюдайте порядок: сначала shell, потом angular, остальное не играет роли.
npm install
npm run start:shell
npm run start:angular-mfeДля React remote поднимите статические серверы в отдельных терминалах:
cd projects/react-mfe
npm install
cd ../
npm run start:react-mfeПосле этого shell будет доступен на http://localhost:4205.
- Нажмите «Загрузить Angular remote» — shell подгрузит Angular remote по Native Federation.
- Нажмите «Загрузить React remote» — shell загрузит
http://localhost:4300/src/remote-entry.tsxи отрисует<react-mfe-widget>.
- Соберите remote в формат ES module.
- Экспортируйте custom element (например,
<vue-mfe-widget>). - Подключите script в shell по аналогии с
load-react-web-component.ts. - Используйте тег custom element в Angular шаблоне.
Таким образом shell остается Angular+Native Federation, а remotes можно писать на любом стеке.
- Переименуйте и заполните нужными данными
deploy.example.sh
mv deploy.example.sh- Выдайте права на исполнение скрипта
chmod +x deploy.sh- Авторизируйтесь в aws cli sdk.
- Запустите скрипт.
./deploy.sh