Modul 1: Introduktion til Web Components
Velkommen til det første modul i kurset. Før vi dykker ned i kode, skal vi forstå det fundamentale problem, som Web Components løser, og hvordan teknologien adskiller sig fra de store JavaScript-frameworks, du måske kender i dag (som React, Angular eller Vue).
1. Hvad er Web Components?
Web Components er ikke ét enkelt værktøj eller bibliotek. Det er en samling af fire native webstandarder, som W3C og browserproducenterne har indbygget direkte i browserens motor.
Formålet er simpelt: At gøre det muligt at oprette genanvendelige, indkapslede og speciallavede HTML-tags, som fungerer overalt på internettet uden eksterne afhængigheder.
I dag har du standard-tags som <video> eller <input type="date">. Bag disse tags gemmer der sig avanceret logik og styling (f.eks. knapper til at afspille, spole og justere lyd). Med Web Components kan du lave dine helt egne tags, som f.eks. <web-butik-kurv>, <bruger-kort> eller <custom-slider>, der fungerer på nøjagtig samme indbyggede måde.
2. Web Components vs. Frameworks (React, Vue, Angular)
Hvorfor overhovedet bruge Web Components, når vi allerede har populære frameworks? Svaret ligger i langtidsholdbarhed og fleksibilitet.
| Egenskab | Web Components (Native) | Frameworks (React / Vue) |
|---|---|---|
| Afhængigheder | Ingen. Koden kører direkte i alle moderne browsere. | Kræver installation af biblioteker, npm-pakker og build-værktøjer. |
| Levetid | Permanent. Webstandarder fjernes stort set aldrig. Kode skrevet i dag virker også om 15 år. | Tidsbegrænset. Frameworks opdateres med store ændringer (breaking changes), og ældre kode forældes. |
| Ydeevne | Meget letvægt. Browseren skal ikke downloade og analysere et stort framework først. | Tungere. Brugeren skal downloade selve framework-koden, før appen kan starte. |
| Kompatibilitet | Kan bruges inde i ethvert framework (React, Vue, Angular) eller på en ren HTML-side. | Kan normalt ikke blandes på tværs af hinanden (f.eks. React-komponenter inde i Angular). |
Konklusion: Frameworks er fantastiske til at styre gigantiske, komplekse fullstack-applikationer med masser af dynamisk data. Web Components er derimod det ultimative valg til at bygge designsystemer og UI-biblioteker (knapper, menuer, formularer), som skal kunne genbruges på tværs af mange forskellige projekter og teknologier i en virksomhed.
3. De 4 grundpiller i Web Components
Teknologien bag Web Components hviler på fire specifikke standarder. I dette kursus vil vi dykke dybt ned i dem alle, men her er den overordnede introduktion:
- Custom Elements (Modul 2): Det sæt af JavaScript-regler, der gør det muligt at fortælle browseren: "Hey, når du ser tagget
<min-knap>, så skal du køre denne specifikke JavaScript-klasse." - Shadow DOM (Modul 3): En lukket, digital "boble" inden i dit HTML-element. CSS-styling og HTML-struktur inde i boblen er fuldstændig isoleret fra resten af hjemmesiden, så ekstern kode ikke kan ødelægge dit design ved et uheld.
- HTML Templates (Modul 4): Brug af
<template>-tagget til at skrive rå HTML-støbeforme, som browseren gemmer i hukommelsen uden at vise dem, indtil du vækker dem til live med JavaScript. - Slots (Modul 5): Brug af
<slot>-tagget, som fungerer som et fleksibelt "hul" i din støbeform. Det gør det muligt for andre at putte deres egen tekst eller HTML ind i din færdige komponent udefra.
✍️ Modul 1: Quiz & Refleksion
Inden vi hopper videre til Modul 2 og begynder at skrive vores allerførste Custom Element, så overvej følgende spørgsmål:
- Hvis en stor virksomhed har tre forskellige web-apps (én bygget i React, én i Angular og en gammel side i ren HTML/PHP) – hvorfor vil det så være smart at bygge virksomhedens nye visuelle design-knapper som Web Components i stedet for React-komponenter?
- Hvad er den vigtigste regel for navngivningen af et Custom Element (f.eks.
<mit-tag>), som sikrer, at browseren ikke forveksler det med fremtidige officielle HTML-tags? (Hint: Kig på eksemplerne i teksten).