Ответ
Shadow DOM — это технология веб-компонентов, которая инкапсулирует стили и DOM-структуру внутри компонента, изолируя их от основного документа. Это позволяет избежать конфликтов стилей и скриптов.
Virtual DOM — это оптимизация в библиотеках (например, React), где создается легковесная копия реального DOM. Изменения сначала применяются к Virtual DOM, затем сравниваются с реальным DOM, и только необходимые обновления применяются к нему, что ускоряет рендеринг.
Пример Shadow DOM:
<template id="my-component">
<style>p { color: red; }</style>
<p>Hello, Shadow DOM!</p>
</template>
<script>
const template = document.getElementById('my-component');
const shadowRoot = document.createElement('div').attachShadow({ mode: 'open' });
shadowRoot.appendChild(template.content.cloneNode(true));
document.body.appendChild(shadowRoot.host);
</script>
Пример Virtual DOM (React):
function App() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(count + 1)}>Clicked {count} times</button>;
}
Разница:
- Shadow DOM решает проблему изоляции компонентов.
- Virtual DOM решает проблему производительности при частых обновлениях интерфейса.