Микрофронтенд на пальцах с module federation 2.0
Размер шрифта
Цвет фона и шрифта
Изображения
Озвучивание текста
Обычная версия сайта
HATED.RU разработка и SEO продвижение сайтов, контекстная реклама в РФ
Разработка сайтов, контекстная реклама и привлечение трафика
SEO продвижение
+7 985 220-54-74
+7 985 220-54-74 mts.svg
+7 495 220-54-74 mts.svg
E-mail
info@hated.ru
Адрес
г. Тула, Московское шоссе , д.2в, офис № 3
Рязань, 2-й Школьный переулок, 1
Москва, МКАД 60й километр 4а
Режим работы
Ежедневно: с 9:00 до 20:00
Услуги
  • Разработка сайтов на CMS "1с Битрикс"
    • Информационный сайт на CMS 1с Битрикс
    • Лендинг на CMS 1с Битрикс
    • Доработка и модернизация сайта на 1С-Битрикс
    • Интернет-магазин на CMS 1с Битрикс
    • Корпоративный сайт на 1С‑Битрикс под ключ
    • Разработка маркетплейсов и агрегаторов на 1С-Битрикс
    • Разработка промо-сайта на 1С-Битрикс | Создание промо-сайтов под ключ
    • Сайт-визитка на CMS 1С Битрикс
    • Техническая поддержка сайта на 1С-Битрикс
  • Контекстная реклама
    • Настройка контекстной рекламы «Уверенный старт»
    • Настройка контекстной рекламы Яндекс Директ «Быстрый старт»
    • Сопровождение контекстной рекламы "+"
    • Сопровождение и ведение контекстной рекламы
    • Email-маркетинг и Email-Рассылка
    • Аудит Яндекс.Директ | Проверка контекстной рекламы
    • Медийная реклама
    • Мобильная реклама
    • Продвижение в Яндекс ПромоСтраницах
  • SEO продвижение сайтов
    • SEO‑аудит сайта: комплексный анализ для эффективного продвижения
    • Первичная SEO‑оптимизация сайта — залог эффективного продвижения!
    • SEO‑продвижение интернет‑магазина: рост продаж через поисковый трафик
    • SEO для «1С‑Битрикс»: выведем сайт в топ поиска за 3–6 месяцев
    • SEO-продвижение сайта в Google
    • Комплексное GEO-продвижение сайта в AI
    • Продвижение сайтов в ТОП Яндекс
    • Продвижение сайтов по трафику в России | Рост целевого SEO‑трафика
  • Дизайн "Брендинг"
    • Графический дизайн
    • Дизайн рекламных кампаний
    • Разработка брендбука — заказать создание брендбука для компании
    • Разработка логотипа — логотип, который работает на узнаваемость и продажи
    • Создание презентаций и каталогов на заказ | Дизайн, тексты, вёрстка
  • Разработка сайтов на CMS "Wordpress"
    • Доработка и модернизация сайтов на Wordpress
    • Разработка Landing page на WordPress
    • Разработка интернет-магазина на Wordpress
    • Разработка сайта-портфолио на Wordpress
    • Сайт-визитка на WordPress
  • Разработка сайтов на конструкторе "Tilda"
    • Одностраничный сайт на тильде
    • Доработка сайта на Tilda
    • Интернет-магазин на Тильде
    • Корпоративный сайт на Тильде
    • Промо-сайт на Тильде
    • Сайт-каталог на Тильде
    • Сайт-портфолио на Тильде
    • Создание сайта-визитки на Тильде
    • Сопровождение и техническая поддержка сайтов на Тильде
  • Создание быстрого сайта без CMS
    • Разработка базового лендинга без CMS в
  • DevOps
    • Внедрение CI/CD — автоматизация разработки под ключ
  • UI/UX разработка \ дизайн
    • Backend разработка на заказ
    • Frontend разработка сайтов и приложений
    • Разработка мобильных приложений для iOS и Android
  • Разработка под Telegram
    • Разработка Telegram Mini Apps
    • Разработка чат-ботов для Telegram
  • Таргетированная реклама
    • Авитолог — продвижение на Авито
    • Таргетированная реклама в Telegram \ Телеграмм ADS
    • Таргетированная реклама в VK (ВКонтакте)
    • Таргетированная реклама в Одноклассниках под ключ
Наши работы
  • Разработка сайтов на Drupal
  • Брендинг и айдентика
  • Портфолио: сайты на 1С‑Битрикс
  • Портфолио: сайты на CMS Tilda
  • Разработка сайта на "Чистом коде"
Магазин
  • Битрикс 24
  • Готовые шаблоны для cms 1c Bitrix
Компания
  • О компании
  • Лицензии
  • Реквизиты
  • Сотрудники
  • Отзывы
Статьи
Контакты
  • Отзывы
  • Лицензии
  • Новости
  • Вопрос-ответ
  • ...
    ...
    +7 985 220-54-74
    +7 985 220-54-74 mts.svg
    +7 495 220-54-74 mts.svg
    E-mail
    info@hated.ru
    Адрес
    г. Тула, Московское шоссе , д.2в, офис № 3
    Рязань, 2-й Школьный переулок, 1
    Москва, МКАД 60й километр 4а
    Режим работы
    Ежедневно: с 9:00 до 20:00
    HATED.RU разработка и SEO продвижение сайтов, контекстная реклама в РФ
    Разработка сайтов, контекстная реклама и привлечение трафика
    SEO продвижение
    Услуги
    Наши работы
    Магазин
    Компания
    Статьи
    Контакты
      HATED.RU разработка и SEO продвижение сайтов, контекстная реклама в РФ
      Услуги
      Наши работы
      Магазин
      Компания
      Статьи
      Контакты
        +7 985 220-54-74 mts.svg
        +7 495 220-54-74 mts.svg
        E-mail
        info@hated.ru
        Адрес
        г. Тула, Московское шоссе , д.2в, офис № 3
        Рязань, 2-й Школьный переулок, 1
        Москва, МКАД 60й километр 4а
        Режим работы
        Ежедневно: с 9:00 до 20:00
        HATED.RU разработка и SEO продвижение сайтов, контекстная реклама в РФ
        Телефоны
        +7 985 220-54-74 mts.svg
        +7 495 220-54-74 mts.svg
        E-mail
        info@hated.ru
        Адрес
        г. Тула, Московское шоссе , д.2в, офис № 3
        Рязань, 2-й Школьный переулок, 1
        Москва, МКАД 60й километр 4а
        Режим работы
        Ежедневно: с 9:00 до 20:00
        HATED.RU разработка и SEO продвижение сайтов, контекстная реклама в РФ
        • Услуги
          • Услуги
          • Разработка сайтов на CMS "1с Битрикс"
            • Разработка сайтов на CMS "1с Битрикс"
            • Информационный сайт на CMS 1с Битрикс
            • Лендинг на CMS 1с Битрикс
            • Доработка и модернизация сайта на 1С-Битрикс
            • Интернет-магазин на CMS 1с Битрикс
            • Корпоративный сайт на 1С‑Битрикс под ключ
            • Разработка маркетплейсов и агрегаторов на 1С-Битрикс
            • Разработка промо-сайта на 1С-Битрикс | Создание промо-сайтов под ключ
            • Сайт-визитка на CMS 1С Битрикс
            • Техническая поддержка сайта на 1С-Битрикс
          • Контекстная реклама
            • Контекстная реклама
            • Настройка контекстной рекламы «Уверенный старт»
            • Настройка контекстной рекламы Яндекс Директ «Быстрый старт»
            • Сопровождение контекстной рекламы "+"
            • Сопровождение и ведение контекстной рекламы
            • Email-маркетинг и Email-Рассылка
            • Аудит Яндекс.Директ | Проверка контекстной рекламы
            • Медийная реклама
            • Мобильная реклама
            • Продвижение в Яндекс ПромоСтраницах
          • SEO продвижение сайтов
            • SEO продвижение сайтов
            • SEO‑аудит сайта: комплексный анализ для эффективного продвижения
            • Первичная SEO‑оптимизация сайта — залог эффективного продвижения!
            • SEO‑продвижение интернет‑магазина: рост продаж через поисковый трафик
            • SEO для «1С‑Битрикс»: выведем сайт в топ поиска за 3–6 месяцев
            • SEO-продвижение сайта в Google
            • Комплексное GEO-продвижение сайта в AI
            • Продвижение сайтов в ТОП Яндекс
            • Продвижение сайтов по трафику в России | Рост целевого SEO‑трафика
          • Дизайн "Брендинг"
            • Дизайн "Брендинг"
            • Графический дизайн
            • Дизайн рекламных кампаний
            • Разработка брендбука — заказать создание брендбука для компании
            • Разработка логотипа — логотип, который работает на узнаваемость и продажи
            • Создание презентаций и каталогов на заказ | Дизайн, тексты, вёрстка
          • Разработка сайтов на CMS "Wordpress"
            • Разработка сайтов на CMS "Wordpress"
            • Доработка и модернизация сайтов на Wordpress
            • Разработка Landing page на WordPress
            • Разработка интернет-магазина на Wordpress
            • Разработка сайта-портфолио на Wordpress
            • Сайт-визитка на WordPress
          • Разработка сайтов на конструкторе "Tilda"
            • Разработка сайтов на конструкторе "Tilda"
            • Одностраничный сайт на тильде
            • Доработка сайта на Tilda
            • Интернет-магазин на Тильде
            • Корпоративный сайт на Тильде
            • Промо-сайт на Тильде
            • Сайт-каталог на Тильде
            • Сайт-портфолио на Тильде
            • Создание сайта-визитки на Тильде
            • Сопровождение и техническая поддержка сайтов на Тильде
          • Создание быстрого сайта без CMS
            • Создание быстрого сайта без CMS
            • Разработка базового лендинга без CMS в
          • DevOps
            • DevOps
            • Внедрение CI/CD — автоматизация разработки под ключ
          • UI/UX разработка \ дизайн
            • UI/UX разработка \ дизайн
            • Backend разработка на заказ
            • Frontend разработка сайтов и приложений
            • Разработка мобильных приложений для iOS и Android
          • Разработка под Telegram
            • Разработка под Telegram
            • Разработка Telegram Mini Apps
            • Разработка чат-ботов для Telegram
          • Таргетированная реклама
            • Таргетированная реклама
            • Авитолог — продвижение на Авито
            • Таргетированная реклама в Telegram \ Телеграмм ADS
            • Таргетированная реклама в VK (ВКонтакте)
            • Таргетированная реклама в Одноклассниках под ключ
        • Наши работы
          • Наши работы
          • Разработка сайтов на Drupal
          • Брендинг и айдентика
          • Портфолио: сайты на 1С‑Битрикс
          • Портфолио: сайты на CMS Tilda
          • Разработка сайта на "Чистом коде"
        • Магазин
          • Магазин
          • Битрикс 24
          • Готовые шаблоны для cms 1c Bitrix
        • Компания
          • Компания
          • О компании
          • Лицензии
          • Реквизиты
          • Сотрудники
          • Отзывы
        • Статьи
        • Контакты
        • +7 985 220-54-74
          • Телефоны
          • +7 985 220-54-74
            mts.svg
          • +7 495 220-54-74
            mts.svg
        • г. Тула, Московское шоссе , д.2в, офис № 3
          Рязань, 2-й Школьный переулок, 1
          Москва, МКАД 60й километр 4а
        • info@hated.ru
        • Ежедневно: с 9:00 до 20:00

        Микрофронтенд на пальцах с module federation 2.0

        Создание сайтов и SEO продвижение сайтов любой тематики в и по всей России. Индивидуальная разработка сайтов и комплексный подход к SEO продвижению.
        —
        Новости
        —Микрофронтенд на пальцах с module federation 2.0
        20.03.2025
        Оформите заявку на сайте, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.
        Задать вопрос
        Микрофронтенд — это независимый модуль, который мы подключаем. Хост — это бандл, куда мы подключаем микрофронтенд. Remote — это бандл, который мы импортируем. Мы будем использовать следующий стек технологий: React, typescript, webpack, webpack mf 2.0.
        Микрофронтенды — это архитектурный подход к разработке фронтенд-приложений, который подразумевает разбиение пользовательского интерфейса на независимые, самодостаточные модули. Предлагаю пропустить плюсы и минусы данного подхода, так как о них уже довольно много написано, и перейти сразу к преимуществам выбора нашего основного инструмента, благодаря которому мы будем реализовывать этот подход.

        На самом деле инструментов на текущий момент очень много и каждый инструмент идеален по своему. Но чаще всего мой выбора падает на module federation 2.0 по нескольким причинам:
        •  Генерация типов

        • Обновления типов в реальном времени (type hot reload)

        • Глубокая интеграция с webpack. Все же при выборе сборщика я часто собираю на нем.

        А теперь когда нам стали ясны все плюсы, предлагаю начать с основного и посмотреть на наш базовый конфиг.

         type ModuleFederationOptions = {
        name: string; // Имя для module federation
        filename?: string; // Имя для remoteEntry
        remotes?: Array<RemoteInfo>; // Удаленные объекты, которые будет использовать приложение
        exposes?: PluginExposesOptions; // Это файлы, которые это приложение будет предоставлять как удаленные объекты другим приложениям.
        shared?: ShareInfos; // Конфигурация зависимостей
        dts?: boolean | PluginDtsOptions; // Контроль типов
        };

        Чтобы легче было понять что за что отвечает , давайте представим что у нас день рождения, а наш конфиг - это наша карточка которая подскажет гостям кто мы такие.

        1. Тогда получается что name - это ваше имя.
          Зачем нужно: Чтобы другие могли тебя найти и знали как к тебе обращаться.

        2. fileName - Имя файла, который ты раздал гостям, чтобы все знали что ты умеешь делать.
          Зачем нужно: Чтобы другие могли найти тебя и узнать что ты можешь делать и чем помочь.

        3. remotes - Список друзей, которых ты позвал на свой праздник.
          Зачем нужно: Чтобы найти приглашенных друзей и знать, кто тебе будет помогать и что они умеют.

        4. exposes - что ты сам умеешь делать и что можешь предложить другим.
          Зачем нужно: Чтобы другие знали чем ты можешь помочь.

        5. shared: Общие вещи которые вы с друзьями будете использовать вместе.
          Зачем нужно: Чтобы все пользовались чем то одним и не возникло конфликтов из за использования разных вещей, например как использовать на дне рождения все одинаковые тарелки и никого не обидеть.

        6. dts: инструкция.
           Зачем нужно: как работать друг с другом и не допускать ошибок.

        Давайте чуть более подробно поговорим о настройках shared. Вернемся к примеру с вечеринкой. Как мы помним shared - вещи которые вы с друзьями будете использовать вместе. Например собирать конструктор.

        1. singleton - в примере конструктора это как вы договорились использовать одинаковые детальки. Т.е. в техническом плане, наш модуль будет загружаться только один раз.
          Возможные проблемы: Если указать false, то мы столкнемся с проблемой что если у нас в одном приложении версия react 18, в другом 17 и еще в одном 16, то тогда будут загружены все три версии. Это влечет за собой большие проблемы, например: увеличение размера приложения(станет тяжелым, будет дольше грузится), конфликты совместимости, сложность в отладке(какая версия используется).
          Зачем нужно: Чтобы все использовали одни кубики, которые стыкуются друг с другом, иначе все может сломаться(в определенных случаях, так как сейчас мы говорим о том что используем одинаковые версии).

        2. eager  - сразу выкладываем все части конструктора на стол, что бы мы понимали что будем использовать. Т.е. загружаем модуль сразу после инициализации а не по требованию.
          Зачем нужно: Зачем тратить время на поиск деталей, если они все будут на столе перед нами.

        3. requiredVersion: Версия деталей.
          Зачем нужно: Чтобы все использовали одинаковые детальки.

        А теперь когда мы знаем как зачем и что нужно, то после настройки нашего конфига мы можем описать нашу точку входа. Для базового использования микрофронтов, достаточно лишь немного видоизменить входную точку. Раньше наша точка входа (index.tsx) могла выглядеть так:

        // index.tsx
        import BusinessСard from '@exposes/BusinessСard/BusinessСard';
        const root = ReactDOM.createRoot(document.getElementById('root'));
        root.render(<BusinessСard value='Карточка' />);

        Сейчас же точка входа разбивается на 2 файла.

        Это файл index.ts и bootstrap.tsx

        // index.ts
        void import('./bootstrap');
        export {};
        // bootstrap.tsx
        const BusinessСard = lazy(() => import('firstApp/BusinessСard'));
        const root = ReactDOM.createRoot(document.getElementById('root'));
        root.render(
        <Suspense fallback={<Loader />}>
        <BusinessСard value='Карточка' />
        </Suspense>,
        );

        Но тут же возникают вопросы:

        1. Зачем мы разбиваем входную точку index.ts на два файла?
          Основная задача файла index.ts (точки входа) — загрузить и выполнить код из bootstrap.tsx. Наш index.ts теперь загружается асинхронно, что очень важно: на момент загрузки у нас ещё нет информации о том, какие версии могут быть предоставлены другими микрофронтами. Все эти зависимости будут вынесены в отдельные чанки и загружены позже. (bootstrap нужен только для тех, кто экспортирует модули)

        2. Зачем нужен динамический импорт?
          Он создаёт отдельный чанк для загружаемого модуля и помогает загрузить его только тогда, когда это действительно необходимо.

        3. Также прошу обратить внимание на <Suspense>
          Этот компонент позволяет управлять состоянием загрузки асинхронных компонентов. Часто встречается подход, когда в <Suspense> оборачивают всё приложение, и на этом его использование заканчивается. Однако лучше оборачивать каждый компонент отдельно — это предотвратит "моргание" интерфейса и не превратит всю страницу в скелетон.

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

        У нас есть хост, мы открываем страничку с основного сайта и 

        1. Браузер по скрипту начинает загружать наше приложение.

        2. Далее подключаем remoteEntry, то есть происходит загрузка и извлечение бандла.Стоит отметить что скрипты могут загружаться параллельно, но при этом каждое приложение знает кто станет хостом а кто ремоутом. 

        3. Как только загрузился хост, он начинает загружать приложение, запуск меняется с синхронного на асинхронный.

        4. Приложение загружается и уже понимает что в нем есть некий удаленный компонент, например в нашем случае бизнес карточка, которая грузится из какого то scope. 

          4.1 Происходит проверка версий, для того чтобы модуль реакта понимал какую версию ему необходимо взять. (не забываем про флаг сингл тон).

          4.2 Приходит запрос получить карточку.

        5. Далее инициализируется скоуп, куда передается версия реакта.

          5.1 ) Скоуп загружает модуль с remote. При этом для ремоут батона проверяется стоит ли грузить все заново или подгрузить какие то чанки отдельно, например стили , шрифты и т.д.

        6. После чего, если ошибок нет, то модуль возвращает нам асинхронный модуль бизнес карточки.

        Давайте вкратце посмотрим на реальном примере, как всё это работает. Запускаем приложение и открываем DevTools.

        Мы видим, как сначала загружается наше приложение: браузер по скрипту запустил основное приложение, после чего загрузился наш микрофронт. В сетевых запросах мы видим чанки основного приложения, а затем - наш remoteEntry.js (файл, который содержит информацию о модулях, предоставляемых микрофронтендом).

        Далее мы просто берём нашу бизнес-карточку, и если всё хорошо, то получаем её. И всё! На самом деле, ничего сложного здесь нет. На текущий момент большинство ошибок, с которыми вы столкнётесь, хорошо описаны в документации.

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

        К слову о генерации: я предлагаю также на простом примере посмотреть, как работает генерация типов и обработка ошибок.

        Итак, мы выводим нашу карточку


        Дополнительно
        Назад к списку
        • отписка от рассылки
        • Цены
        Наши специалисты ответят на любой интересующий вопрос
        Задать вопрос
        Проекты
        Разработка сайтов на Drupal
        Брендинг и айдентика
        Портфолио: сайты на 1С‑Битрикс
        Портфолио: сайты на CMS Tilda
        Разработка сайта на "Чистом коде"
        Фото компании
        Битрикс 24
        Готовые шаблоны для cms 1c Bitrix
        Услуги
        Разработка сайтов на CMS "1с Битрикс"
        Контекстная реклама
        SEO продвижение сайтов
        Дизайн "Брендинг"
        Разработка сайтов на CMS "Wordpress"
        Разработка сайтов на конструкторе "Tilda"
        Создание быстрого сайта без CMS
        DevOps
        UI/UX разработка \ дизайн
        Разработка под Telegram
        Таргетированная реклама
        Статьи
        Новости
        О компании
        Сертификаты
        Реквизиты
        +7 985 220-54-74
        +7 985 220-54-74 mts.svg
        +7 495 220-54-74 mts.svg
        E-mail
        info@hated.ru
        Адрес
        г. Тула, Московское шоссе , д.2в, офис № 3
        Рязань, 2-й Школьный переулок, 1
        Москва, МКАД 60й километр 4а
        Режим работы
        Ежедневно: с 9:00 до 20:00
        info@hated.ru
        г. Тула, Московское шоссе , д.2в, офис № 3
        Рязань, 2-й Школьный переулок, 1
        Москва, МКАД 60й километр 4а
        © 2026 Разработка сайтов, контекстаная реклама,веб-дизайн hated
        ООО "ХАТЕД"
        ИНН/КПП 7100009120 / 710001001
        ОГРН: 1217100008960

        Политика конфиденциальности
        Версия для слабовидящих
        Карта сайта
        Главная Услуги Контакты Проекты Акции
        Регион сайта: Россия