Jaký je rozdíl mezi Shadow DOM, Virtual DOM a běžným DOM?
sobes.tech AI
Odpověď od AI
DOM (Document Object Model) je API pro HTML a XML dokumenty. Představuje strom uzlů, kde každý uzel odpovídá prvku, atributu nebo textovému fragmentu dokumentu. Používá se k přístupu a manipulaci se strukturou, styly a obsahem webových stránek. Přímé manipulace s DOM mohou být pomalé kvůli nutnosti přepočtu stylů, rozvržení a překreslení.
Virtuální DOM je koncept používaný ve frameworkech jako React nebo Vue. Je to reprezentace stromu DOM, která je uložena v paměti. Když se data komponenty změní, framework vytvoří nový virtuální strom DOM. Poté jej porovná s předchozím (diffing) a určí minimální sadu změn, které je třeba aplikovat na skutečné DOM. To optimalizuje aktualizaci stránky minimalizací nákladných operací s reálným DOM.
Shadow DOM je webový standard, který umožňuje enkapsulaci struktury, stylů a chování komponenty. Vytváří skrytý "stínový" strom DOM, připojený k elementu v běžném DOM (host element). Obsah Shadow DOM je izolován od zbytku dokumentu: styly uvnitř něj neovlivňují vnější svět a naopak. To je užitečné pro vytváření znovu použitelných, izolovaných komponent, například <video> nebo <input type="range">.
Hlavní rozdíly:
| Charakteristika | Obvyklé DOM | Virtuální DOM | Shadow DOM |
|---|---|---|---|
| Zobrazení | Skutečný strom dokumentu API | Lehká reprezentace DOM v paměti | Inkapslený strom DOM |
| Účel | API pro přístup a změny dokumentu | Optimalizace aktualizací DOM | Inkapsulace komponent |
| Manipulace | Přímé | Nepřímé (přes porovnání verzí) | Přímé, ale pouze uvnitř "stínu" |
| Izolace stylů | Ne | Ne (pokud nepoužíváte CSS-in-JS nebo moduly) | Ano |
| Standard | Část webové platformy | Koncept frameworků | Část webové platformy |