Платформа · Урок 73

Веб-компоненты: Shadow DOM и Custom Elements

Фреймворки приходят и уходят, а стандарт браузера остаётся. Веб-компоненты дают изолированные переиспользуемые элементы на чистом JavaScript — без установки реакта.

Shadow DOM

Тень создаёт изолированное дерево: внутренние стили не вытекают наружу и внешние его не ломают.

const host = document.createElement("div");
host.attachShadow({ mode: "open" });
host.shadowRoot.innerHTML = `
  <style>.box { padding: 8px; background: #eef; }</style>
  <div class="box">Привет из тени</div>`;
document.body.append(host);

Custom Elements

Свой тег через класс и customElements.define() — со своими атрибутами и жизненным циклом.

class QkCheck extends HTMLElement {
  connectedCallback() { this.innerHTML = "✓ проверено"; }
}
customElements.define("qk-check", QkCheck);
💡
slot — окно для внешнего контента: компонент задаёт каркас, а содержимое вставляется из документа. Идеально для «кнопка + бейдж», «иконка + подпись».
ℹ️
Браузерная поддержка зрелая. Веб-компоненты активно используют в дизайн-системах крупных корпораций — независимо от фреймворка.