Sobes.tech
Middle

Aké sú rozdiely medzi shadow DOM, virtual DOM a bežným DOM?

sobes.tech AI

Odpoveď od AI

Shadow DOM:

  • enkapsulácia: Vytvára samostatný, izolovaný DOM strom v rámci hlavného dokumentu. Štýly a skripty v Shadow DOM predvolene neovplyvňujú hlavný dokument a naopak.
  • scoping: Ideálne pre vytváranie opakovane použiteľných, nezávislých komponentov (napríklad web komponenty).
  • rendering: Prehliadač priamo renderuje Shadow DOM.

Virtual DOM:

  • abstrakcia: Predstavuje DOM vo forme JavaScript objektov v pamäti.
  • diffing a patching: Používajú ho rámce (napríklad React) na optimalizáciu aktualizácií. Pri zmene stavu rámec vytvorí novú verziu Virtual DOM, porovná ju s predchádzajúcou (diffing) a aplikuje len potrebné zmeny na skutočný DOM (patching).
  • výkon: Zlepšuje výkon pri častých aktualizáciách DOM minimalizovaním priamej interakcie s browser API.
  • nie je funkcia prehliadača: Ide o koncept implementovaný na úrovni JavaScriptu, nie nativná funkcia prehliadača.

Obyčajný DOM (Document Object Model):

  • reprezentácia: Predstavuje strom uzlov (prvky, atribúty, texty), ktorý zodpovedá štruktúre HTML dokumentu.
  • API: Poskytuje API na prístup a manipuláciu so štruktúrou a obsahom dokumentu.
  • rendering: Prehliadač renderuje skutočný DOM.
  • priama manipulácia: Zmeny sa vykonávajú priamo na skutočnom DOM, čo môže byť pomalé pri veľkom počte aktualizácií.

Tabuľka prehľadu:

Osobitnosť Shadow DOM Virtual DOM Obyčajný DOM
Účel Inkapsulácia komponentov Optimalizácia aktualizácií DOM-u Predstavenie HTML štruktúry
Povaha Nativná možnosť prehliadača Koncept, implementovaný v JS Nativná štruktúra prehliadača
Izolácia Áno, na úrovni DOM a CSS Nie, ide o zobrazenie Nie
Interakcia Priama interakcia prehliadača Najskôr diffing/patching, potom DOM Priama interakcia
Použitie Web komponenty Rámce (React, Vue a pod.) Základné web API