Übersicht über Variablen & Dynamische Laufzeit

Übersicht über Variablen & Dynamische Laufzeit

docmd bietet eine leistungsstarke Variablen- und Personalisierungs-Engine, die statische Build-Zeit-Interpolation mit reaktiver clientseitiger Personalisierung nahtlos vereint.

Anstatt Firmennamen, API-Endpunkte, Versionsnummern oder Copyright-Jahre manuell in Dutzenden von Markdown-Dateien zu pflegen, können Sie dynamische Platzhalter über einfache Template-Ausdrücke einbinden.

Willkommen zur Dokumentation von **\{{ site.title }}** v\{{ docmd.version }}!
Aktuelles Copyright: © \{{ docmd.buildYear }}.
Live ausgewertete Variablen in diesem Build

Die folgenden Werte wurden vom docmd-Compiler während dieses Dokumentations-Builds live aufgelöst:

  • Site-Titel: {{ site.title }}
  • Compiler-Version: v{{ docmd.version }}
  • Build-Jahr: © {{ docmd.buildYear }}
  • Aktueller Git-Branch: {{ docmd.gitBranch || “main” }}
  • Aktueller Git-Commit: {{ docmd.gitCommit || “HEAD” }}
  • Aktueller Seiten-Slug: {{ page.slug }}

Template-Syntax

Die Variablen-Engine verwendet eine übersichtliche geschweifte Klammer-Syntax:

\{{ variableName }}

Fallback-Standardwerte

Falls eine Variable nicht definiert ist (etwa in lokalen Entwicklungsumgebungen), können Sie mit dem ||-Operator einen Standardwert angeben:

Verbinden Sie sich mit unserem Server unter `\{{ server.endpoint || "https://api.example.com" }}`.
Willkommen zurück, \{{ user.name || 'Gast' }}!
Erstellt für Version \{{ targetVersion || 2.0 }}.

Als Fallback unterstützt werden:

  • Einfach formatierte Strings: 'beispiel'
  • Doppelt formatierte Strings: "beispiel"
  • Zahlen: 42 oder 2.0
  • Bezeichner: default

Leerzeichen-Toleranz

Ausdrücke tolerieren beliebige Leerzeichen um Variablennamen und Operatoren:

\{{   myVar   }}
\{{ env.PORT || "8080" }}

Variablen-Lebenszyklus: Build-Zeit vs. Laufzeit

docmd trennt den Variablen-Lebenszyklus sauber in zwei aufeinander aufbauende Phasen:

Variablen-Auflösungs-Pipeline
graph TD subgraph Quelle["1. Eingaben & Definitionen"] B1["docmd.config.json<br/><code>variables</code> Block"] B2["Git & Umgebung<br/><code>env.*</code>, <code>DOCMD_VAR_*</code>, Git Root"] B3["Integrierte Metadaten<br/><code>version</code>, <code>buildYear</code>, <code>page.slug</code>"] end subgraph Compiler["2. Statische Build-Zeit-Auflösung"] Quelle --> VReg["VariableRegistry (@docmd/parser)"] VReg --> Interp["Markdown & Config Interpolator"] Interp --> HTML["Statisches HTML (Null JS-Overhead)"] Interp --> Markers["Dynamische Marker &lt;span data-docmd-var&gt;"] end subgraph Laufzeit["3. Clientseitige reaktive Laufzeit"] Markers --> DRuntime["docmd-runtime.js (window.docmd)"] DRuntime --> DOM["Live-Rehydrierung & Codeblöcke"] DRuntime --> Events["Cross-Frame postMessage & Events"] end
Statische Build-Zeit-Variablen

Statische Variablen werden während docmd build direkt in das HTML kompiliert. Sie verursachen keinerlei JavaScript-Ausführungszeit im Browser und keinen Layout-Shift (CLS).

Reaktive Laufzeit-Variablen

Dynamische Benutzersitzungswerte (wie API-Schlüssel oder Benutzernamen) werden von docmd-runtime.js live im DOM synchronisiert. Bei Eingaben aktualisieren sich alle Codeblöcke sofort.

Statische Build-Zeit-Variablen

Variablen, die zur Build-Zeit feststehen, werden direkt in fertigen HTML-Code eingesetzt. Es entsteht keinerlei Overhead für den Besucher.

Reaktive dynamische Variablen

Variablen, die als dynamisch konfiguriert sind oder Benutzersitzungsdaten enthalten (wie user.name oder user.apiKey), werden in reaktive Markierungs-Elemente gekapselt:

<span data-docmd-var="user.name" class="docmd-var">Gast</span>

Im Browser aktualisiert docmd-runtime.js diese Werte bei Benutzerinteraktionen, SPA-Seitenwechseln und Session-Änderungen automatisch.

Architektur: Trennung von Engine und UI

Um maximale Geschwindigkeit und Stabilität zu garantieren, wahrt docmd eine strikte Grenze zwischen Präsentation und Laufzeit-Engine:

  • docmd-runtime.js: Die schlanke, headless Dynamic Engine, die in alle Templates (default, summer etc.) eingebunden wird. Sie verwaltet Registrierungen, Abonnements und Events, ohne in Styles oder UI einzugreifen.
  • docmd-main.js: Das UI-Präsentationsskript für Theme-Wechsel, mobile Navigation und DOM-Interaktionen. Nach jedem SPA-Übergang ruft es window.docmd.sync() auf.
Universelle Template-Kompatibilität

Da docmd-runtime.js universell in allen Layouts eingebunden wird, erhalten auch eigene Themes und Community-Templates die volle Personalisierungsunterstützung automatisch.

Nächste Schritte

Erkunden Sie die vollständigen Anleitungen zu allen Themen:

Integrierte Variablen

System-Variablen für Versionen, Build-Jahre, Datumsangaben und Git-Metadaten.
Leitfaden lesen

Konfigurations-Variablen

Variablen in docmd.config.json deklarieren und in Fußzeilen, Bannern und Markdown nutzen.
Leitfaden lesen

Umgebungsvariablen

CI/CD-Integration und Zero-Prefix-Promotion via DOCMD_VAR_*.
Leitfaden lesen

Client-Laufzeit & Personalisierung

Client-SDK (window.docmd), reaktive Benutzersitzungen und interaktive Codebeispiele.
Leitfaden lesen