Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Webpack: micro frontends, webpack module federation, single-spa, web components, build-time integration

Что такое микрофронтенды и какие есть подходы к их реализации?

Вопрос проверяет понимание архитектуры микрофронтендов, её целей и основных способов реализации для создания масштабируемых веб-приложений.

Короткий ответ

Микрофронтенды — это архитектурный стиль, при котором веб-интерфейс разбивается на независимые, автономные части, которые могут разрабатываться, развертываться и масштабироваться отдельными командами. Основная цель — преодолеть ограничения монолитного фронтенда в больших проектах, позволяя командам работать независимо с разными технологиями. Ключевые подходы включают сборку на этапе сборки (build-time), интеграцию на стороне сервера (server-side) и интеграцию на стороне клиента (client-side) с использованием таких инструментов, как Webpack Module Federation или фреймворков вроде single-spa. Это повышает скорость разработки и упрощает поддержку крупных приложений.

Длинный ответ

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

Основные подходы к реализации

Существует несколько стратегий интеграции микрофронтендов в единое приложение:

  • Сборка на этапе сборки (Build-time): Отдельные микрофронтенды публикуются как пакеты (например, npm), а основное приложение включает их как зависимости и собирает всё вместе. Это просто, но требует пересборки всего приложения при обновлении любого микрофронтенда.
  • Интеграция на стороне сервера (Server-side): Сервер (например, с помощью Nginx или специального компоновщика) собирает HTML-фрагменты от разных микрофронтендов в одну страницу. Это улучшает производительность, но добавляет сложность на сервере.
  • Интеграция на стороне клиента (Client-side): Это самый популярный подход. Основное приложение ("раковина" или shell) динамически загружает и рендерит микрофронтенды во время выполнения в браузере. Это обеспечивает максимальную независимость развёртывания.

Популярные инструменты и технологии

Для клиентской интеграции часто используют:

  • Webpack Module Federation: Позволяет одному приложению динамически загружать код из другого во время выполнения. Это стало стандартом де-факто.
  • single-spa: Мета-фреймворк, который координирует загрузку и рендеринг микрофронтендов, написанных на разных технологиях (React, Vue, Angular).
  • Web Components: Использование нативных браузерных стандартов для создания инкапсулированных компонентов, которые можно встраивать в любое приложение.

Пример кода с Webpack Module Federation

Конфигурация основного приложения (host) и удалённого микрофронтенда (remote).

// webpack.config.js основного приложения (host)
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');

module.exports = {
  plugins: [
    new ModuleFederationPlugin({
      name: 'hostApp',
      remotes: {
        // Указываем, где искать удалённый модуль
        mfCart: 'cartApp@http://localhost:3001/remoteEntry.js',
      },
      shared: ['react', 'react-dom'], // Общие зависимости
    }),
  ],
};

// В коде основного приложения React компонент загружается динамически
const RemoteCart = React.lazy(() => import('mfCart/CartComponent'));

function App() {
  return (
    
      Магазин
      
        
      
    
  );
}

Где применяется

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

Вывод: Архитектуру микрофронтендов стоит применять для больших, долгоживущих веб-приложений, где независимость команд и частота развёртываний являются критически важными факторами. Для небольших проектов или приложений с одной командой сложность этой архитектуры может перевесить её преимущества.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Webpack

    Webpack

  • JavaScript

    JavaScript

Ключевые слова

#micro frontends

#webpack module federation

#single-spa

#web components

#build-time integration

Подпишись на React Developer в телеграм