Atomic Design und Component Driven Development in React

3 min read

Photo by Hal Gatewood on Unsplash

Atomic Design ist ein Ansatz zur Erstellung wiederverwendbarer UI Komponenten. Anstatt Seiten zu bauen, werden zuerst kleine “Atome” erstellt, die dann zu größeren Komponenten zusammengesetzt werden.

Dieser Artikel erklärt die Prinzipien von Atomic Design und zeigt praktische Beispiele mit React und Tailwind CSS.

Die Idee hinter Atomic Design

Bei Atomic Design werden Interface-Komponenten wie chemische Atome gesehen. Atome verbinden sich zu Molekülen, die sich weiter zu größeren Organismen zusammensetzen.

Übertragen auf die UI-Entwicklung bedeutet das:

  • Atome: Kleinste UI-Komponenten wie Buttons, Inputs etc.
  • Moleküle: Zusammenstellungen von Atomen wie Suchleiste, Karten etc.
  • Organismen: Komplexe Bereiche mit Molekülen und Atomen wie Header, Sidebar etc.
  • Vorlagen: Konkrete Seiten, die aus Organismen bestehen

Durch diese hierarchische Struktur entsteht ein wiederverwendbares Component-System.

Die Vorteile von Atomic Design

  • Wiederverwendbarkeit: Komponenten können auf allen Seiten genutzt werden
  • Konsistenz: Einheitliches Styling und Verhalten
  • Wartbarkeit: Änderungen an einem Ort geschehen
  • Skalierbarkeit: Neue Seiten durch Kombination vorhandener Komponenten

Beispiel mit React und Tailwind CSS

Schauen wir uns ein konkretes Beispiel an. Die Atome könnten wie folgt aussehen:

// Atom: Button
export function PrimaryButton({text}) {
  return (
    <button 
      className="bg-blue-500 text-white p-2 rounded"
    >
      {text}
    </button>
  );
}

// atom: Input
export function Input({placeholder}) {
  return (
    <input
      className="border p-2"
      type="text"
      placeholder={placeholder} 
    />
  );
}

Aus diesen Atomen können wir Moleküle bauen, wie eine Suchleiste:

// molecule: SearchBar 
export function SearchBar() {
  return (
    <div className="flex items-center">
      <Input placeholder="Search..." />
      <PrimaryButton text="Go" />
    </div>
  );
}

Die Moleküle wiederum dienen als Basis für komplexere Organismen, wie ein Page Layout:

// Organismus: PageLayout
export function PageLayout({children}) {
  return (
    <div className="flex flex-col">
      <header className="p-4 flex items-center">
        <h1 className="text-2xl">My Website</h1>
      </header>
      
      <SearchBar />
      
      <main className="p-8">
        {children}  
      </main>
      
    </div>
  );
}

Auf dieser Basis lassen sich nun einfache Vorlagen für ganze Screens erstellen:

// Vorlage: HomePage
export function HomePage() {
  return (
    <PageLayout>
      <h1>Home</h1>
      <p>Welcome on the home page!</p>
    </PageLayout>
  );
}

// Vorlage: AboutPage
export function AboutPage() {
  return (
    <PageLayout>
     <h1>About</h1>
     <p>Learn more about us.</p>
    </PageLayout>
  );
}

Projektstruktur

Eine mögliche Struktur für ein React Projekt mit Atomic Design könnte so aussehen:

├─ components/
│  ├─ atoms/
│  │  ├─ Button.js
│  │  ├─ Input.js
│  │  └─ ...
│  ├─ molecules/
│  │  ├─ SearchBar.js
│  │  ├─ Card.js 
│  │  └─ ...
│  └─ organisms
│     ├─ PageLayout.js
│     ├─ FeedLayout.js
│     └─ ...
├─ pages/
│  ├─ HomePage.js
│  ├─ SettingsPage.js
│  └─ ...
└─ app.js

Die Komponenten werden nach Atomen, Molekülen und Organismen getrennt. Die konkreten Screens liegen dann in einem separaten Pages-Ordner.

Diese Struktur ist natürlich nur ein Vorschlag - je nach Projektgröße und Team kann es auch andere sinnvolle Varianten geben.

Wichtig ist, dass man eine klare Trennung der Verantwortlichkeiten erreicht. Atome kümmern sich nur um sich selbst, Moleküle setzen Atome zusammen aber enthalten keine Business-Logik. Organismen wiederum orchestrieren Moleküle und Atome für komplexere Bereiche.

Dadurch erhält man gut getestete, wiederverwendbare Komponenten und eine saubere Codebase.

Fazit

Atomic Design fördert wiederverwendbare Komponenten und ein konsistentes User Interface. Dadurch werden React-Apps wartbarer und erweiterbar.

Die Unterteilung in Atome, Moleküle und Organismen hilft auch, die Komplexität größerer Anwendungen zu strukturieren.

Mit Methoden wie Component Driven Development, Storybook und Tools wie Tailwind CSS lässt sich Atomic Design sehr gut umsetzen.

Ich hoffe dieser Artikel konnte die Vorteile und das Vorgehen von Atomic Design näherbringen. Probiere es doch mal in deinem nächsten Projekt aus!

Take Your Skills to the Next Level

If you enjoyed this article, you may also like these related pieces:

Wir sind dein digitaler Problemlöser

Du brauchst Unterstützung bei der Entwicklung, dem Hosting oder der Optimierung deiner Webanwendung oder deines Online-Shops? Oder suchst du Hilfe bei der Erstellung deiner Marketingstrategie?

Als Netzwerk aus Freelancern und Agenturen haben wir für jede Aufgabe den passenden Experten für dich!

Wir sind dein One-Stop-Shop für alles Digitale. Mit über 20 Jahren Erfahrung in den Bereichen Webentwicklung, SEO, Cloud und SaaS wissen wir, worauf es ankommt.

Unser Motto: Wir lieben es, technische Probleme zu lösen und digitale Lösungen auf die Beine zu stellen. Dabei gehen wir immer mit der Zeit und setzen auf die neuesten Technologien. Also worauf wartest du noch? Lass uns ins Gespräch kommen und dein nächstes Digitalprojekt zum Erfolg führen!

Bild von einem Büro mit Küche, mit Laptop, Kaffee und Notizbuch