HTML Academy · Урок

Основы федерации модулей

Разберитесь, как федерация модулей обеспечивает совместное использование микроинтерфейсов

Урок 4 из 414 шагов

«Основы федерации модулей» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Скрипты модулей ES: type=module
  2. Карты импорта: importmap
  3. Динамический import() в модулях
  4. Основы федерации модулей
← Назад к HTML Academy