Основы федерации модулей
Разберитесь, как федерация модулей обеспечивает совместное использование микроинтерфейсов
«Основы федерации модулей» — бесплатный урок HTML Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.
Что такое федерация модулей
Федерация модулей позволяет приложению JavaScript во время выполнения загружать и выполнять код другого независимо развёрнутого приложения. Этот подход появился в Webpack 5, а теперь возможен и с помощью встроенных карт импорта и динамического импорта.
Сценарий использования
Крупные организации разделяют монолиты на несколько независимо развёртываемых «микрофронтендов» — оболочку-хост и несколько приложений функций. Федерация модулей позволяет оболочке загружать каждую функцию по требованию, не объединяя их во время сборки.
Федерация Webpack
В Webpack 5 хост объявляет remotes (другие приложения для использования), а удалённые приложения объявляют exposes (то, что они предоставляют). Среда выполнения при запуске получает небольшой манифест от каждого удалённого приложения и загружает фрагменты по мере их импорта хостом.
Встроенные эквиваленты
Без Webpack та же идея работает с картами импорта, указывающими на удалённые пакеты ESM, и динамическим импортом для загрузки. В карте импорта хоста указано "feature-cart": "https://cart-team.example.com/entry.js"; import("feature-cart") загружает последнюю развёрнутую версию.
<script type="importmap">
{
"imports": {
"feature-cart": "https://cart.example.com/v1/entry.js",
"feature-checkout": "https://checkout.example.com/v2/entry.js"
}
}
</script>Общие зависимости
Без координации каждое удалённое приложение поставляло бы собственную копию React. Инструменты федерации позволяют объявлять общие зависимости: первое удалённое приложение, загрузившее React, делает его доступным для всех остальных. Встроенные подходы используют карты импорта, чтобы направить все удалённые приложения к одному URL React.
Независимое развёртывание
Каждая команда отвечает за своё удалённое приложение и развёртывает его, когда считает нужным. Хост не пересобирается: при следующей загрузке страницы он получает новые версии (или обновления после сброса кэша). Это полностью разделяет циклы выпуска.
Стратегии управления версиями
Закрепляйте удалённые приложения за URL с версией (/v1/entry.js, /v2/entry.js), чтобы обновление хоста было намеренным, а не неявным. Некоторые команды используют сопоставление версий semver на уровне карты импорта с помощью таких инструментов, как JSPM.
Компромиссы
Федерация повышает сложность среды выполнения: появляется больше сетевых запросов, отладка между источниками становится труднее, а общие зависимости могут оказаться несовместимыми. Используйте её, когда действительно требуется независимое развёртывание; для небольших проектов одна сборка проще и быстрее.
Изоляция ошибок
Сбой одного удалённого модуля не должен выводить из строя хост. Оборачивайте динамические импорты в границы обработки ошибок (React) или конструкции обработки исключений и отображайте резервный интерфейс при сбое удалённого модуля. Оболочка сохраняет работоспособность, даже если функция временно недоступна.
Типобезопасность
Экспортируемые удалённым модулем сущности не имеют информации о типах хоста на этапе компиляции. Создавайте общие типы TypeScript в отдельном пакете, который используют обе стороны, или применяйте проверку во время выполнения (Zod, io-ts) на границе федерации.
Нативный подход и инструменты
Нативная федерация (карты импорта + ESM) проще и основана на стандартах, но не поддерживает координацию общих зависимостей, которую предоставляет Webpack. Выбирайте Webpack/Module Federation для сложных приложений с большим числом общих зависимостей, а нативный подход — для более простых конфигураций микроинтерфейсов.
Будущее развитие
W3C исследует более развитые примитивы загрузки модулей, которые сделают нативную федерацию функциональнее, включая улучшенное согласование общих зависимостей. Сегодня рассматривайте карты импорта как основу и добавляйте поверх них инструменты федерации.
Проверка знаний
Какова основная причина использования Module Federation в большом приложении?
Итоги
Module Federation позволяет хосту загружать код независимо развёрнутых удалённых модулей во время выполнения. Инструменты Webpack 5 добавляют согласование общих зависимостей, а нативная федерация использует карты импорта и динамический импорт. Используйте этот подход в архитектурах микроинтерфейсов с несколькими командами, принимая дополнительную сложность в обмен на свободу независимого развёртывания.
Изучай HTML с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 40
- Уроки
- 159
Часто задаваемые вопросы
Урок «Основы федерации модулей» бесплатный?
Да — полный текст урока «Основы федерации модулей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.
Чему я научусь в уроке «Основы федерации модулей»?
Разберитесь, как федерация модулей обеспечивает совместное использование микроинтерфейсов Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать HTML Academy?
Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Основы федерации модулей»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке HTML Academy?
Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Скрипты модулей ES: type=module
- Карты импорта: importmap
- Динамический import() в модулях
- Основы федерации модулей