Web Components vs. HTML/CSS componenten
In dit artikel wil ik de voordelen van Web Componenten ten aanzien van HTML/CSS componenten uiteenzetten.
Er was eens...
...een HTML/CSS component genaamd Accordion.
In het kader van leesbaarheid en onderhoudbaarheid is onderstaand voorbeeld niet exact gelijk aan de daadwerkelijke markup voorschriften.
<!-- Basis -->
<div class="dso-accordion dso-accordion-default dso-accordion-reverse-align"></div>
Dit component bestaat uit
- 1 element
- 3 classes:
dso-accordion
en twee modifier classesdso-accordion-default
&dso-accordion-reverse-align
.
Een Accordion bestaat uit één of meerdere Accordion Sections:
<!-- Open Accordion Section -->
<div class="dso-accordion-section dso-success dso-open">
<h2 class="dso-section-handle">
<button type="button" aria-expanded="true">
<span class="sr-only">succes:</span>
Hoe lang duurt de Vergunningcheck?
<span class="dso-icon">
<svg class="di di-plus">
<use href="dso-toolkit/dist/dso-icons.svg#plus" />
</svg>
</span>
<span class="dso-status-description">Controlevraag</span>
<span class="dso-attachments">2 <span class="sr-only">bijlagen</span></span>
</button>
</h2>
<div class="dso-section-body">
<div class="rich-content">
<p>
De Vergunningcheck duurt ongeveer vijf minuten per gekozen werkzaamheid. Het is wel belangrijk dat u alle
benodigde informatie bij de hand heeft.
</p>
</div>
</div>
</div>
Dit component bestaat uit
- 8 elementen (dat is exclusief de elementen van andere HTML/CSS componenten)
- 6 classes (dat is exclusief de classes van andere HTML/CSS componenten)
- 5 modifier classes
dso-open
,dso-success|dso-info|dso-warning|dso-danger
- 5 onderdelen die van inhoud moeten worden voorzien: toegankelijke tekst voor de status, titel, toelichting voor de status, aantal bijlagen, de inhoud.
- 2 attributen (
type="button"
enaria-expanded="true"
)
Accordion en Accordion Section bestaat samen uit 9 elementen, 14 classes, 5 "slots" en 2 attributen. Dit zijn 30 onderdelen.
Dit is het bijbehorende Web Component:
<dso-accordion variant="default" reverse-align>
<dso-accordion-section
handle-title="Is het verplicht om de Vergunningcheck te doen?"
heading="h2"
status="success"
status-description="Controlevraag"
icon="plus"
attachment-count="2"
open
>
<div class="dso-rich-content">
<p>
De Vergunningcheck duurt ongeveer vijf minuten per gekozen werkzaamheid. Het is wel belangrijk dat u alle
benodigde informatie bij de hand heeft.
</p>
</div>
</dso-accordion-section>
</dso-accordion>
De Web Componenten Accordion en Accordion Section hebben een kleiner koppelvlak. Samen:
- 2 elementen
- 9 attributen.
31 onderdelen van het HTML/CSS component vs. 11 onderdelen van het Web Component maakt dat het Web Component een aanzienlijk kleiner koppelvlak heeft.
Een kleiner koppelvlak maakt de kans op breaking changes kleiner. Het Web Component maakt intern natuurlijk wel gebruik van een DOM wat ongeveer lijkt op het HTML/CSS component. Maar het Web Component is een abstractie tussen de presentatie logica en de afnemer.
Een kleinere kans op breaking changes komt niet alleen door het kleinere koppelvlak, maar ook doordat de (interne) presentatie elementen geen onderdeel zijn van het koppelvlak. Hierdoor kunnen kunnen UX designers en toolkit maintainers de presentatie elementen wijzigen zonder dat er een breaking release nodig is.
Er komt pas een breaking release als wijzigingen in het koppelvlak zijn. Zie ook: Koppelvlak.