adesso Blog

Zunächst befassen wir uns mit den Grundlagen von Storybook und seiner Bedeutung in der Welt der UI-Entwicklung.

Was ist Storybook und warum ist es wichtig?

Storybook ist ein leistungsstarkes Tool für Frontend-Entwicklerinnen und -Entwickler, mit dem UI-Komponenten in einer isolierten Umgebung erstellt und getestet werden können. Es handelt sich um eine interaktive Plattform, auf der Entwicklerinnen und Entwickler die Benutzeroberflächen ihrer Anwendungen unabhängig vom Rest der Anwendung entwickeln und präsentieren können. Diese Isolierung ist besonders nützlich, um Designiterationen schnell durchzuführen und die Konsistenz zwischen verschiedenen Komponenten zu gewährleisten.

Der Mehrwert einer Shared UI Library

Eine Shared UI Library ist eine Sammlung von wiederverwendbaren Komponenten, die in verschiedenen Projekten oder von verschiedenen Teams verwendet werden können. Storybook erleichtert den Aufbau und die Pflege solcher Bibliotheken, indem es eine zentrale Plattform für die Visualisierung und das Testen dieser Komponenten bereitstellt. Durch die Wiederverwendung etablierter Komponenten können Teams Entwicklungszeit sparen, die Designkonsistenz erhöhen und eine konsistente Benutzererfahrung über verschiedene Anwendungen und Dienste hinweg sicherstellen. Storybook spielt somit eine Schlüsselrolle bei der Umsetzung effizienter und konsistenter Designpraktiken.

Storybook Grundlagen mit Angular: Ein praktischer Einblick

Beispiel: Button Komponente

Als Beispiel für eine einfache Angular-Komponente verwenden wir eine Schaltfläche MyButtonComponent. Das Aussehen und Verhalten des Buttons soll anpassbar sein. Dazu definieren wir die Inputs „inverted“, „size“ und „label“. Verwendung dieser Inputs:

  • Inverted: Alternativer Style und Hover-Effekt
  • Size: Größe des Buttons
  • Label: Text auf dem Button

Abbildung 1: Input der Button-Komponente inklusive der Standardwerte


Abbildung 2: Verwendung des Inputs im Template der Button-Komponente

Aufbau einfacher Stories

Eine einfache Story-Klasse besteht aus:

  • einer Definition Metadaten: Enthalten Konfigurationen wie Komponententyp, Tags und argTypes.
  • einem Metadaten-Export: Exportiert die definierten Metadaten als Standardexport. Diese Metadaten werden von Storybook verwendet, um die Komponente und ihre Steuerelemente in der Benutzeroberfläche darzustellen.
  • einer Definition von Story-Typen: Erzeugt einen neuen Typ Story, der ein StoryObj mit beispielsweise dem Typ MyButtonComponent ist. Dieser dient zur Typisierung der nachfolgenden Story-Definitionen.
  • einer Definition für einzelne Stories: Jede Story wird als Objekt definiert, das die args (Argumente) für die jeweilige Story enthält.

Die Metadaten der Story-Klassen für MyButtonComponent haben folgende Struktur:

  • Component: Der Komponententyp
  • Tags: Storybook Autodocs ist ein Tool zur automatisierten Erstellung von Komponentendokumentationen. Dazu mehr in Abbildung fünf.
  • argTypes: Definiert die Argumente, die für die Story verwendet werden können, zusammen mit Beschreibungen und optionalen Einstellungen wie dem Steuerungstyp und Optionen. In diesem Fall sind die Argumente label, size und inverted.

Abbildung 3: Metadaten der Story-Klasse

Bei der Definition der einzelnen Stories werden wir auf die spezifischen Eigenschaften der MyButtonComponent eingehen und diese in verschiedenen Arten und Kombinationen darstellen. Einige Beispieldefinitionen sind in Abbildung vier dargestellt. Eine Übersicht:

  • MediumButton: Ein mittel großer Button mit dem Label „Button“
  • SmallButton: Ein kleiner Button mit dem Label „Button“
  • MediumButtonInverted: Ein mittel großer Button in invertiertem Style mit dem Label „Button“
  • BigButton: Ein großer Button mit dem Label „Button“

Abbildung 4: Story-Definitionen

Visualisierung und Interaktion mit Komponenten in Storybook

Nachdem wir die Stories für unsere Komponente erstellt haben, können diese nun im Browser im Storybook UI visualisiert und mit ihnen interagiert werden. Abbildung fünf zeigt einen Überblick über die von unserer Stories-Klasse generierten Stories der MyButtonComponent. Zu sehen sind die vier in unseren Stories definierten Buttons. Außerdem ist die von Storybook Autodocs generierte Dokumentation zu sehen. Diese basiert auf den von uns definierten argTypes. Diese Dokumentation dient auch dazu, mit unseren Stories interagieren zu können, indem wir die Komponenteneigenschaften manipulieren. In der Story-Übersicht in Abbildung fünf kann exemplarisch unsere erste Story „Medium Button“ angepasst werden.


Abbildung 5: Überblick der Storybook UI

Neben der Story-Übersicht können wir auch einzelne Stories ansehen und mit ihnen interagieren. Abbildung sechs zeigt die Story „Big Button“. Zu sehen ist der Button selbst und die Komponenteneigenschaften.


Abbildung 6: Big Button Story

Nutzen von Storybook zur Anreicherung einer UI Library

In diesem Abschnitt geht es darum, wie Storybook entscheidend zur Anreicherung und Verbesserung einer UI Library beitragen kann. Dabei werde ich mich auf die Schlüsselaspekte konzentrieren: Visualisierung, Dokumentation und die daraus resultierende Erhöhung der Konsistenz und Wiederverwendbarkeit von Komponenten.

  • Visualisierung von Komponenten: Storybook ermöglicht die detaillierte Betrachtung von UI-Komponenten in verschiedenen Zuständen und Kontexten. Diese isolierte Sicht hilft, die Designkonsistenz zu gewährleisten und sicherzustellen, dass jede Komponente in jeder Situation wie erwartet funktioniert.
  • Dokumentation der Komponenten: Storybook erleichtert die Erstellung einer umfassenden Dokumentation für jede Komponente. Diese Dokumentationen enthalten klare Anweisungen und Beispiele, die das Verständnis und die korrekte Verwendung der Komponenten in verschiedenen Projekten erleichtern.
  • Verbesserte Konsistenz und Wiederverwendbarkeit: Die Kombination von Visualisierung und Dokumentation in Storybook fördert die Entwicklung konsistenter und wiederverwendbarer Komponenten. Entwicklerinnen und Entwickler sowie Designerinnen und Designer erhalten einen schnellen Überblick über vorhandene Elemente, was die Effizienz steigert und Inkonsistenzen reduziert.

Durch die Vereinfachung und Optimierung der Erstellung, Visualisierung und Dokumentation von UI-Komponenten spielt Storybook eine zentrale Rolle bei der Erstellung und Pflege einer leistungsfähigen und konsistenten UI-Bibliothek, die als Grundlage für zahlreiche Projekte und Teams dienen kann.

Tipps und Tricks für den effektiven Einsatz von Storybook in Angular-Projekten

Hier möchte ich einige praktische Tipps und Tricks vorstellen, die euch helfen, das Beste aus Storybook in euren Angular-Projekten herauszuholen.

Die Integration von Storybook in den Entwicklungsprozess kann die Produktivität erheblich steigern. Hier sind einige Tipps für einen effizienten Workflow:

  • Komponentenfokussierung: Zuerst kleine, isolierte Komponenten in Storybook bauen, bevor diese in größere Anwendungen integriert werden. So können Fehler frühzeitig erkannt und die Wiederverwendbarkeit maximiert werden.
  • Iteratives Design: Benutzt Storybook, um Design-Iterationen schnell durchzuspielen. Experimentiert mit verschiedenen Zuständen und Varianten eurer Komponenten, um das beste Design zu finden.
Troubleshooting: Komplexe Anwendungsintegration

Ein häufiges Problem bei der Verwendung von Storybook ist die Integration isoliert entwickelter Komponenten in komplexe Anwendungsstrukturen. Häufig funktionieren diese Komponenten für sich genommen gut, zeigen aber im Zusammenspiel mit anderen Elementen Inkonsistenzen. Dies liegt meist daran, dass sie nicht ausreichend im Zusammenspiel getestet wurden.

Um solche Integrationsprobleme zu vermeiden, hat sich folgende Vorgehensweise bewährt: Im Storybook sollten gezielt Geschichten entwickelt werden, die verschiedene Komponenten in realistischen Kombinationen testen. Beispielsweise ist es sinnvoll, das Zusammenspiel von Komponenten zu simulieren, die häufig in Formularen verwendet werden. Dieses Vorgehen ermöglicht ein tieferes Verständnis für das Zusammenspiel der Komponenten und hilft, mögliche Probleme frühzeitig zu erkennen und zu beheben.

Ausblick

Storybook bietet eine Vielzahl von Funktionen und Möglichkeiten, die über die in diesem Blog-Beitrag behandelten Grundlagen hinausgehen. Hier einige Beispiele:

  • Storybook Add-ons: Eine Vielzahl von Add-ons für erweiterte Funktionalitäten wie zum Beispiel Accessibility-Tests.
  • Mobile Development: Unterstützung für mobile Frameworks wie React Native.
  • Storybook Deploy: Veröffentlichung von Storybook-Projekten als statische Webseiten.
  • Storybook Docs: Automatische Umwandlung von Stories in umfangreiche Dokumentationen.

Wenn ihr mehr zu Storybook erfahren möchtet, gibt es hier die offizielle Storybook Dokumentation: https://storybook.js.org/docs/angular/get-started/install/

Bild Stephan   Ziemke

Autor Stephan Ziemke

Stephan ist Software Engineer bei adesso und spezialisiert auf Lösungen für die Fertigungsindustrie. Er ist Full-Stack Entwickler mit Fokus auf Angular und Spring Anwendungen.

Kategorie:

Methodik

Schlagwörter:

UI Design

Diese Seite speichern. Diese Seite entfernen.