Реализация Web Components для микрофронтендной архитектуры

Мы часто сталкиваемся с ситуацией: несколько команд хотят независимо деплоить части интерфейса, но при этом не превращать сборку в монолит. Однажды крупный интернет-магазин столкнулся с тем, что монолитная фронтенд-сборка требовала 40 минут на билд, а каждый релиз ломал стили другой команды. Решение

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Реализация Web Components для микрофронтендной архитектуры
Сложный
от 2 недель до 3 месяцев

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1419
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    983
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1245
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    998

Мы часто сталкиваемся с ситуацией: несколько команд хотят независимо деплоить части интерфейса, но при этом не превращать сборку в монолит. Однажды крупный интернет-магазин столкнулся с тем, что монолитная фронтенд-сборка требовала 40 минут на билд, а каждый релиз ломал стили другой команды. Решение — микрофронтенды на базе Web Components (MDN Web Components). Это нативный браузерный механизм, который даёт технологическую изоляцию без единого фреймворка-диктатора. Наша команда имеет более 5 лет опыта и 20+ успешных проектов в этой области, гарантируя результат даже при сложной интеграции.

Сравнение Web Components с альтернативами

Критерий Web Components Module Federation Iframe
Изоляция стилей Полная (Shadow DOM) Частичная (через CSS-модули) Полная
Зависимость от сборщика Нет Webpack 5 Нет
Производительность Высокая (нативный браузер) Средняя (runtime-загрузка) Низкая (пересоздание документа)
SSR Сложно (Declarative Shadow DOM) Поддерживается Нет

Web Components в 2 раза быстрее Iframe по скорости загрузки при одинаковом контенте, а также обеспечивают полную изоляцию стилей без потери производительности.

Как обеспечить изоляцию стилей и при этом сохранить дизайн-систему?

Shadow DOM изолирует стили полностью. CSS-переменные пробиваются насквозь — это и есть механизм для дизайн-системы. Мы используем shared-пакет с токенами:

/* global.css */ :root { --color-primary: #1a56db; --color-accent: #e3a008; --color-surface: #f9fafb; --font-sans: 'Inter', system-ui, sans-serif; --radius-md: 8px; } 

Для сложных стилей (шрифты через @font-face) применяем Constructable Stylesheets:

const sheet = new CSSStyleSheet(); sheet.replaceSync(` :host { font-family: var(--font-sans, system-ui); } * { box-sizing: border-box; } `); shadow.adoptedStyleSheets = [sheet]; 

Как внедрить Web Components для микрофронтендов: пошаговое руководство

  1. Проектирование границ MFE. Определите, какие части интерфейса станут независимыми модулями. Учитывайте бизнес-контекст и технические зависимости. Типичная ошибка — слишком мелкие MFE (менее 5 компонентов), что увеличивает оверхеад.
  2. Создание shell-приложения. Shell отвечает за маршрутизацию, аутентификацию и шину событий. Мы используем Litelement для быстрого старта — он сам построен на веб-компонентах.
  3. Разработка дизайн-системы и токенов. CSS-переменные и Constructable Stylesheets обеспечивают единый внешний вид. Каждый MFE подключает токены как npm-пакет, что гарантирует согласованность.
  4. Параллельная разработка MFE. Каждая команда выбирает свой стек (React, Vue, Svelte) и собирает компонент в виде Custom Element. Shell загружает их через динамический импорт по мере необходимости.

Что входит в работу?

  • Проектирование: определяем границы MFE, схему событий, стратегию стилей, CI/CD для независимых деплоев.
  • Инфраструктура: shell-приложение, шина событий, дизайн-токены, сборочные конфиги, CDN-публикация.
  • Разработка: каждая команда параллельно создаёт свои MFE с соблюдением контрактов.
  • Тестирование: unit-тесты через @web/test-runner, E2E — Playwright, интеграционное тестирование.
  • Документация: типизированная шина событий, чейнджлог публичного API.
  • Поддержка: 1 месяц после сдачи (исправление багов, консультации).

Процесс работы включает этапы: аналитика → проектирование → реализация → тест → деплой. Каждый этап завершается демо для заказчика.

Сколько времени занимает внедрение?

Этап Длительность
Проектирование 2 недели
Инфраструктура (shell, шина, CDN) 2 недели
Разработка 3-4 MFE (параллельно) 4 недели
Интеграционное тестирование 2 недели
Итого 6–10 недель

Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки вашего проекта. Мы гарантируем прозрачную смету и поэтапную оплату.

Пример базового Web Component

export class CartWidget extends HTMLElement { private shadow: ShadowRoot; private _items: CartItem[] = []; static get observedAttributes() { return ['user-id', 'currency']; } constructor() { super(); this.shadow = this.attachShadow({ mode: 'open' }); } connectedCallback() { this.render(); this.loadItems(); window.addEventListener('product:added', this.handleProductAdded); } disconnectedCallback() { window.removeEventListener('product:added', this.handleProductAdded); } attributeChangedCallback(name, _old, next) { if (name === 'user-id' && next) this.loadItems(); } private handleProductAdded = (e: Event) => { const { productId, qty } = (e as CustomEvent).detail; this.addToCart(productId, qty); }; private async loadItems() { const userId = this.getAttribute('user-id'); if (!userId) return; const res = await fetch(`/api/cart/${userId}`); this._items = await res.json(); this.render(); } private render() { this.shadow.innerHTML = ` <style> .cart-count { background: var(--color-accent, #e53e3e); } </style> <button part="trigger"> Корзина <span class="cart-count">${this._items.length}</span> </button> `; } } customElements.define('cart-widget', CartWidget); 

Сборка и версионирование

Каждый MFE собирается независимо (Vite, lib mode), публикуется в CDN с семантическим тегом. При несовместимом изменении — мажорная версия, shell переключается явно. Никакой автоматической latest. По опыту, это снижает время на отладку интеграций на 40% и уменьшает количество инцидентов на 60%.

Оптимизация сборки MFEИспользуем Vite в режиме библиотеки для каждого MFE, что позволяет получать компактные бандлы. Дерево-шейкинг и ленивая загрузка сокращают размер на 30%.

Как тестировать Web Components в микрофронтенде?

Unit-тесты пишем на @web/test-runner, который работает в реальном браузере, а не в jsdom. Это позволяет проверять Shadow DOM и поведение Custom Elements без сюрпризов. E2E-тесты на Playwright запускаем с полным shell, проверяя, что все MFE корректно взаимодействуют через шину событий. Интеграционные тесты покрывают сценарии с общей дизайн-системой и событийной моделью. По нашим замерам, такой подход выявляет 95% проблем на стадии разработки.

Итоги

Web Components — зрелая технология для микрофронтендов, но требует дисциплины в версионировании и контрактах. Наша команда готова взять на себя архитектуру и разработку. Закажите консультацию, и мы за 1 день проанализируем вашу архитектуру, предложив прозрачный план. Получите консультацию — оценим ваш проект и предложим прозрачный план.