Design System Experimente

Das richtige CSS Tool für den Job finden

06. Juni 2021

2 min

Design Systems sind unerlässlich für konsistente und skalierbare Webentwicklung. In diesem Artikel werde ich die Vor- und Nachteile der Verwendung von React in Kombination mit drei verschiedenen CSS-Tools – Tailwind CSS, Stitches und Vanilla Extract – für die Erstellung eines Design Systems analysieren.

Tailwind CSS: Der König der Utility-First CSS

Tailwind CSS bietet ein Utility-First-Ansatz, der die Gestaltung von Komponenten durch vordefinierte Klassen vereinfacht. Die schnelle Umsetzung von Designs ist sein Hauptvorteil, jedoch könnten die riesigen Klassenlisten zu Overhead führen und die Wartbarkeit beeinträchtigen. Trotzdem ist es eine ausgezeichnete Wahl für Prototyping und kleinere Projekte.

1// Beispiel mit Tailwind CSS
2<button className="bg-blue-500 text-white font-bold py-2 px-4 rounded">
3 Primary Button
4</button>
1// Beispiel mit Tailwind CSS
2<button className="bg-blue-500 text-white font-bold py-2 px-4 rounded">
3 Primary Button
4</button>

Beispiel Repo mit Tailwind CSS

Stitches: CSS-in-JS für React

Stitches, als CSS-in-JS-Lösung, integriert nahtlos Styles in React-Komponenten. Die dynamische Generierung von CSS-Klassen ermöglicht eine bessere Isolation und Wiederverwendbarkeit von Stilen. Allerdings könnte der Lernkurve für Anfänger steil sein, und es erfordert einen Shift in der Denkweise von klassischem CSS.

1// Beispiel mit Stitches
2import { styled } from 'stitches';
3
4const Button = styled('button', {
5 backgroundColor: 'blue',
6 color: 'white',
7 borderRadius: '4px',
8 padding: '8px 16px',
9 fontWeight: 'bold',
10});
11
12<Button>Primary Button</Button>
1// Beispiel mit Stitches
2import { styled } from 'stitches';
3
4const Button = styled('button', {
5 backgroundColor: 'blue',
6 color: 'white',
7 borderRadius: '4px',
8 padding: '8px 16px',
9 fontWeight: 'bold',
10});
11
12<Button>Primary Button</Button>

Beispiel Repo mit Stitches

Vanilla Extract: Typisierte CSS für React

Vanilla Extract bringt Typisierung in die CSS-Welt und ermöglicht das Schreiben von CSS mithilfe von TypeScript. Die klare Typisierung verbessert die Entwicklererfahrung und verhindert viele typische CSS-Fehler zur Laufzeit. Jedoch erfordert die Integration von Vanilla Extract eine etwas komplexere Konfiguration und ein Verständnis von TypeScript.

1// Beispiel mit Vanilla Extract
2import { style } from '@vanilla-extract/css';
3
4export const button = style({
5 backgroundColor: 'blue',
6 color: 'white',
7 borderRadius: '4px',
8 padding: '8px 16px',
9 fontWeight: 'bold',
10});
11
12// Verwendung
13<button className={button}>Primary Button</button>
1// Beispiel mit Vanilla Extract
2import { style } from '@vanilla-extract/css';
3
4export const button = style({
5 backgroundColor: 'blue',
6 color: 'white',
7 borderRadius: '4px',
8 padding: '8px 16px',
9 fontWeight: 'bold',
10});
11
12// Verwendung
13<button className={button}>Primary Button</button>

Beispiel Repo mit Vanilla Extract

Fazit: Die Qual der Wahl

Die Auswahl zwischen Tailwind CSS, Stitches und Vanilla Extract hängt von den spezifischen Anforderungen des Projekts und den Präferenzen des Entwicklers ab. Tailwind CSS bietet Schnelligkeit und Einfachheit, Stitches bietet CSS-in-JS-Vorteile, während Vanilla Extract mit typisiertem CSS und Fehlervermeidung punktet.

Insgesamt zeigt dieser Vergleich, dass die Entscheidung für ein CSS-Tool stark von den individuellen Präferenzen, dem Projektumfang und den gewünschten Funktionen abhängt. Entwickler können nun bewusster entscheiden, welches Tool am besten zu ihren spezifischen Anforderungen passt.

Kontakt

Wir kennen uns und hatten schon länger keinen Kontakt mehr?

Klingt beruflich interessant und wir sollten mal gemeinsam zu Steuerbot sprechen?

Schreib' mir doch gerne 'ne E-Mail, folge mir oder vernetze dich!