Теневой (Shadow) DOM и Virtual DOM (виртуальное DOM) - это два разных концепта, которые используются в веб-разработке.
- Теневой (
Shadow
) DOM - это технология, которая позволяет создавать изолированные компоненты пользовательского интерфейса, которые могут быть вложены в другие веб-страницы или веб-приложения. Теневой DOM представляет собой отдельную иерархическую структуру элементов HTML, которая находится внутри основной страницы. Каждый теневой DOM может содержать свой собственный CSS-код, JavaScript-код и обработчики событий, что позволяет создавать более сложные и гибкие пользовательские интерфейсы.
То, что находится под #shadow-root
– и называется «shadow DOM».
Теневой DOM – это способ создать свой, изолированный, DOM для компонента.
shadowRoot = elem.attachShadow({mode: open|closed})
– создаёт теневой DOM дляelem
. Еслиmode="open"
, он доступен через свойствоelem.shadowRoot
.- Мы можем создать подэлементы внутри
shadowRoot
с помощьюinnerHTML
или других методов DOM.
Элементы теневого DOM:
- Обладают собственной областью видимости идентификаторов
- Невидимы JavaScript селекторам из главного документа, таким как
querySelector
, - Стилизуются своими стилями из теневого дерева, не из главного документа.
- Virtual DOM - это концепция, которая используется в React для улучшения производительности при работе с пользовательским интерфейсом. Виртуальное DOM - это легковесное представление реальной DOM-структуры, которое хранится в памяти и обновляется только при необходимости.
Ключевая разница между теневым и виртуальным DOM заключается в том, что теневой DOM - это отдельная иерархическая структура элементов HTML, которая может быть вложена в другие веб-страницы или веб-приложения, а виртуальное DOM - это легковесное представление реальной DOM-структуры, которое используется в React для повышения производительности и упрощения процесса разработки и обслуживания пользовательского интерфейса.