Впровадження Web Components для мікрофронтендної архітектури

Коли кілька команд розвивають один інтерфейс, монолітна збірка сповільнює релізи та ламає стилі одна одної. Ми реалізуємо мікрофронтендну архітектуру на Web Components, забезпечуючи повну ізоляцію технологій і стилів. Наша команда бере на себе весь цикл — від аудиту до впровадження та подальшої підтримки, щоб ви отримали надійне рішення, яке масштабується разом із бізнесом.

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

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

Ми часто стикаємося з ситуацією: кілька команд хочуть незалежно деплоїти частини інтерфейсу, але при цьому не перетворювати збірку на моноліт. Одного разу великий інтернет-магазин зіткнувся з тим, що монолітна фронтенд-збірка вимагала 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 день проаналізуємо вашу архітектуру, запропонувавши прозорий план. Отримайте консультацію — оцінимо ваш проєкт і запропонуємо прозорий план.

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

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060