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