CGChristoph Griehl
ENLebenslauf
ArbeitenExpertiseBlogÜber michKontaktRead in English
← Alle Beiträge
Technik · Web Components · Webentwicklung

Eine produktionsreife Web-Component-Library bauen

Lektionen aus einer LitElement-Komponentenbibliothek, die über Dutzende Apps hinweg genutzt wird — API-Design, Cross-Browser-Tests und Doku.

CG
Christoph Griehl
Senior Full-Stack Engineer
16. Apr. 20232 Min. Lesezeit
Logo des Web-Component-Standards
Logo des Web-Component-Standards

Ich habe über einen langen Zeitraum eine LitElement-Web-Component-Library gebaut und gepflegt, die von Dutzenden Anwendungen genutzt wurde. So viele Komponenten auszuliefern — über Themes, Browser und Teams hinweg, die ich nicht kontrollierte — hat mir gezeigt, wo Web Components glänzen und wo sie dich still und leise etwas kosten. Das ist es, was ich jedem mitgeben würde, der sich anschickt, eine eigene zu beginnen.

Warum Web Components

Web Components sind eine Reihe von Plattform-APIs zum Bauen wiederverwendbarer Custom Elements mit gekapseltem Verhalten und Styling. Der Gewinn ist ein Designsystem, das du über Anwendungen hinweg teilen kannst — unabhängig von deren Framework, mit einer API, die auf Webstandards beruht statt auf dem Lebenszyklus einer einzelnen Bibliothek. Ionic ist das kanonische Beispiel dafür, wie weit dieser Ansatz skaliert.

Die Teile, die wirklich schwer sind

Das Modell hat echte Oberfläche: Lifecycle-Callbacks, das Shadow DOM, das Zusammenspiel von Properties und Attributes, die Teilnahme an Formularen und CSS Custom Properties als deine Theming-Naht. Schreib das nicht alles von Hand — nutze ein Framework wie LitElement (Klassensyntax) oder Stencil (JSX) und lass es den Boilerplate aufsaugen.

Die härtere, weniger glamouröse Arbeit ist das Testen. Jeder unterstützte Browser hat seine eigene Auslegung von HTML, CSS und JavaScript, und eine Komponentenbibliothek muss sich über alle hinweg gleich verhalten. Diese Cross-Browser-Garantie ist der Großteil dessen, was eine Demo von etwas trennt, auf das sich andere Teams verlassen können.

Das API zu entwerfen ist die eigentliche Arbeit

Das öffentliche API einer Komponente ist ein Vertrag, und sobald Dutzende Apps davon abhängen, ist es teuer, ihn zu brechen. Ein paar Dinge machten das nachhaltig:

  • Eine automatisierte Release-Pipeline mit klarem Semantic Versioning, damit Nutzer genau wissen, was ein Upgrade bedeutet.
  • Dokumentation mit interaktiven, ausführbaren Beispielen — der schnellste Weg für Nutzer, eine Komponente zu verstehen, ist, ihre Props zu ändern und ihr beim Reagieren zuzusehen.
  • Ein echter Support-Kanal vom ersten Tag an, denn Fragen sind unvermeidlich, und eine Bibliothek ohne Support untergräbt das Vertrauen schnell.

Eine Komponentenbibliothek steht und fällt mit ihrem API und ihrer Dokumentation, nicht damit, wie viele Komponenten sie ausliefert.

Zum Präsentieren der Komponenten nutzte ich Storybook, und ich kann es nicht uneingeschränkt empfehlen — es war oft fehleranfällig, und sein API stand mehr im Weg, als dass es half.

Was sich überträgt

Web Components sind ein mächtiger, framework-unabhängiger Weg, wiederverwendbare UI zu bauen, aber der Hebel kommt daher, die Bibliothek als Produkt zu behandeln: ein stabiles API, exzellente Doku und eine Teststrategie, die vier Browser übersteht. Komponenten zu testen und zu überwachen verdient im Besonderen einen eigenen Artikel — es ist schwieriger als gewöhnliches UI-Testing und es lohnt sich, es richtig zu machen.

Web ComponentsLit ElementLibraryUXUI
CG
Christoph Griehl

Senior Full-Stack Engineer in Deutschland — tätig an KI-/RAG-Systemen, Geodaten-Software, Dokumentenintelligenz und datenintensiven Web-Plattformen.

Weiterlesen
20. März 2023 · Projekt

Predium: ESG-Software für Immobilien entwickeln

Beitrag lesen →
8. Jan. 2022 · Projekt

Eine schnelle Website für ein Familienrestaurant

Beitrag lesen →