FaceFlow — Layout System
A layout is the structural frame that wraps every page. It defines where the header goes, where the footer goes, what global styles apply, and where page-specific content is placed. Think of it as the "shell" of your website — consistent across all pages that use it.
Layout-Entwicklerdokumentation
Layouts definieren den gemeinsamen Seitenrahmen, der von FaceFlow-Seiten verwendet wird.
Für technische Anwender ist ein Layout der Page-Shell-Vertrag. Es legt fest, wo gemeinsam genutzte Bereiche liegen, wo Seiteninhalte eingefügt werden und wie eine Familie von Pages einen konsistenten Rahmen behält, ohne Struktur Seite für Seite zu duplizieren.
Core Responsibility
Ein Layout sollte kontrollieren:
- die gesamte Dokumentstruktur
- Platzierung von Header, Footer und gemeinsamen Bereichen
- den Haupteinfügepunkt für Inhalte
- strukturelle Wrapper und Rahmen für die Seiten-Familie
- optionales layout-weites Styling oder Verhalten
Ein Layout sollte keine seiten-spezifischen Marketinginhalte besitzen.
Layout Skeleton
Die meisten Layouts lassen sich durch ein einfaches Muster verstehen:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ page.title }}</title>
</head>
<body>
{header}
{siteComponents}
<main>
{content}
</main>
{footer}
</body>
</html>Die zentrale Anforderung ist ein verlässlicher {content}-Einfügepunkt. Ohne diesen haben Pages keinen vorhersehbaren Ort zum Rendern.
Shell Contract Example
Ein Layout kann zusätzliche gemeinsam genutzte Bereiche bereitstellen und gleichzeitig die Ownership-Grenze sauber halten:
<body class="resource-layout">
{header}
<div class="resource-shell">
<aside class="resource-sidebar">
{siteComponents}
</aside>
<main class="resource-main">
{content}
</main>
</div>
{footer}
</body>Die wichtige Regel ist, dass die Shell strukturell bleibt. Die Page besitzt weiterhin die Sequenz, die in {content} gerendert wird.
Relationship to Pages and Components
Behalte das Ownership-Modell klar:
- Layout besitzt die Shell
- Seite (Page) besitzt die Komposition der Experience
- Komponente (Component) besitzt wiederverwendbare Inhaltsabschnitte innerhalb der Experience
Wenn Layouts strukturell bleiben, lassen sich Seiten-Familien leichter weiterentwickeln.
Shared Regions
Layouts sind der richtige Ort für gemeinsam genutzte Bereiche wie:
- persistente Navigation
- standardmäßige Footer-Rahmung
- Dokumentations-Sidebars
- Support-Leisten, die in einer Seiten-Familie verwendet werden
Beispiel:
<body class="docs-layout">
{header}
<div class="docs-shell">
<aside class="docs-sidebar">
{siteComponents}
</aside>
<main class="docs-content">
{content}
</main>
</div>
{footer}
</body>Das ist strukturelle Wiederverwendung. Ein einmaliges Werbebanner gehört nicht hierher.
Layout Families
Gängige Layout-Familien umfassen:
- Haupt-Marketing-Site-Shell
- Kampagnen-Landing-Shell
- Ressourcen- oder Dokumentations-Shell
- Portal- oder Knowledge-Base-Shell
Jede Familie sollte ein dauerhaftes Strukturmuster darstellen, nicht eine temporäre Inhaltsvariante.
Layout-Level Styling
Layouts können gemeinsame Stilentscheidungen definieren, die zur Shell gehören:
<body class="min-h-screen bg-slate-950 text-white">
{header}
<main class="mx-auto max-w-7xl px-6 py-16">
{content}
</main>
{footer}
</body>Das ist angemessen, wenn der Stil zum Seitenrahmen gehört. Abschnittsspezifisches Styling gehört weiterhin in Komponenten.
Change Impact
Layout-Änderungen haben große Auswirkungen, weil ein Layout oft viele Pages beeinflusst.
Vor einer Änderung am Layout prüfen:
- welche Seiten-Familie davon abhängt
- ob sich die Bedeutung gemeinsamer Bereiche ändert
- ob sich Inhaltsbreite, Abstände oder Navigationsannahmen ändern
- ob bestehende Komponenten noch korrekt in die Shell passen
Layout Review Pattern
Wenn eine Layout-Änderung vorgeschlagen wird, prüfe die Auswirkungen in folgender Reihenfolge:
shell semantics
-> shared regions
-> content width and spacing
-> component fit
-> dependent page-family behaviorDas hilft Teams zu vermeiden, eine scheinbar kleine Shell-Änderung zu genehmigen, die stillschweigend mehrere abhängige Pages bricht.
Technical Review Checklist
- Exponiert das Layout einen klaren Inhaltseinfügepunkt?
- Kümmert es sich nur um Shell-Ebenen-Angelegenheiten?
- Können mehrere Pages es ohne Einmal-Ausnahmen wiederverwenden?
- Sind gemeinsame Bereiche wirklich gemeinsam?
- Würde eine Änderung dieses Layouts viele Pages in verständlicher Weise beeinträchtigen?
Anti-Patterns
Vermeide:
- direktes Einbetten seiten-spezifischer Texte im Layout
- Erstellen nahezu identischer Layouts für kleine Variationen
- Verschieben von Abschnittslogik in die Shell
- Nutzung des Layouts als Ablageort für allen gemeinsamen Inhalt
- Ändern der Shell-Semantik ohne Prüfung der abhängigen Pages
Example Decision Rule
Verwende ein Layout, wenn die Änderung den Rahmen um viele Pages betrifft:
new docs sidebar across the whole docs section -> Layout
new CTA block inside one page section -> Component
new page-specific proof content -> Page composition