Shadow DOM se uporablja v spletnem razvoju, omogoča pa ustvarjanje izoliranih in samostojnih dreves DOM znotraj spletnih komponent.
Njegova glavna lastnost je, da inkapsulira oz. izolira notranjo strukturo in sloge komponente ter preprečuje, da bi vplivali na glavni dokument ali druge komponente ali da bi nanje vplivali, kar nam omogoča boljšo modularnost in ponovno uporabo.
Kaj je DOM?
DOM (Document Object Model) je programski vmesnik, ki predstavlja strukturo dokumenta HTML ali XML kot drevo objektov. To razvijalcem omogoča dinamično manipuliranje z vsebino, strukturo in slogi. Vsak element na spletni strani (p, div, …) je vozlišče v tem drevesu, do katerega lahko dostopate in ga spreminjate z JavaScriptom.
Kaj je Shadow DOM?
Shadow DOM je del DOM-a, ki pa zagotavlja enkapsulacijo za spletne komponente. Razvijalcem omogoča ustvarjanje izoliranih, samostojnih komponent, kjer notranja struktura in slogi ne motijo glavnega dokumenta ali drugih komponent.
Kako deluje Shadow DOM?
- Enkapsulacija: Shadow DOM omogoča razvijalcem, da ustvarijo skrito, izolirano poddrevo znotraj elementa. To pomeni, da slogi in skripti, definirani znotraj shadow DOM, ne vplivajo na preostali del dokumenta in obratno.
- Shadow Host: To je običajni element DOM, na katerega je pritrjen shadow DOM. Deluje kot posoda za senčno drevo.
- Shadow Root: Korensko vozlišče senčnega drevesa. Senčni koren ustvarite z uporabo metode attachShadow na senčnem gostitelju.
- Shadow Tree: To je drevo DOM-a znotraj senčnega korena. Vsebuje lahko lastne elemente, sloge in skripte.
Način uporabe Shadow DOM-a:
- odprto: dostopen prek JavaScripta z uporabo lastnosti Element.shadowRoot.
- zaprto: ni dostopen od zunaj, kar izboljša enkapsulacijo.
Primer uporabe
See the Pen
Shadow DOM by Ziga (@pomagalnik)
on CodePen.
Prednosti uporabe Shadow DOM:
- Izolacija sloga in skripta: Shadow DOM zagotavlja, da slogi in skripti v senčnem drevesu ne motijo preostalega dokumenta in obratno. To preprečuje uhajanje sloga in konflikte.
- Komponente za večkratno uporabo: Z inkapsulacijo strukture in slogov komponent lahko ustvarimo komponente, ki jih je mogoče znova uporabiti in jih je mogoče vzdrževati in brezhibno delujejo.
- Poenostavljen stil: S Shadow DOM lahko pišete sloge, specifične za komponente, ne da bi nas skrbelo težave s specifičnostjo CSS ali konflikti slogov z globalnimi slogi.
Primeri praktične uporabe:
- Elementi po meri: Shadow DOM se običajno uporablja z elementi po meri za ustvarjanje samostojnih pripomočkov, ki jih je mogoče preprosto znova uporabiti.
- Knjižnice in ogrodja: Številne sodobne knjižnice in ogrodja JavaScript, kot sta LitElement in Stencil, izkoriščajo Shadow DOM za zagotavljanje inkapsuliranih, modularnih komponent.
Shadow DOM je zmogljivo orodje za ustvarjanje inkapsuliranih spletnih komponent za večkratno uporabo. Z izolacijo slogov in skriptov v senčnem drevesu se lahko razvijalci izognejo številnim pogostim težavam, povezanimi z konflikti, kar vodi do čistejše kode, ki jo je lažje vzdrževati.