Nunjucks-Tutorial

Serversäiteg gerendert Makroen fir Eleventy, Express oder all Node-Schablounen-Pipeline — d'Approche am GOV.UK-Stil, mam Katalog an de Klassen-Hooks vu Lily.

Wat Dir bauen wäert

E klengt serversäiteg gerendert Kontaktformulaire — Feld mat Etikett, Schécken-Knäppchen, null JavaScript-Last — fir d'éischt nackeg, duerno gestalt, an ongeféier 10 Minutten.

Ier Dir ufänkt

Dir braucht git, Node 22 oder méi nei a pnpm 10 oder méi nei. All Nunjucks-Pipeline funktionéiert — Eleventy, Express oder einfachen Nunjucks.

Schrëtt 1 — D'Code kréien

git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-nunjucks-headless
pnpm install
pnpm test        # vitest rendering every macro

All Komponent ass e Verzeechnes am components/ mat engem macro.njk, hirem Test a hirer Dokumentatioun — zum Beispill components/button/macro.njk. Léisst Äre Nunjucks-Loader op components/ weisen (an Eleventy füügt et dem Include-Wee derbäi) an importéiert, wat Dir braucht.

Schrëtt 2 — Är éischt Komponent

{% from "components/button/macro.njk" import button %}

{{ button({ text: "Save", type: "submit" }) }}

Rendert <button class="button" type="submit">Save</button>. Makroe huele ee Params-Objet: text (escaped) oder html (roh), type, label fir en aria-labelan en Klassen-Hook-Unhänker.

Schrëtt 3 — E klengt Formulaire zesummestellen

{% from "components/form/macro.njk" import form %}
{% from "components/label/macro.njk" import label %}
{% from "components/text-input/macro.njk" import textInput %}
{% from "components/button/macro.njk" import button %}

<form class="form" method="post">
  <div class="field">
    {{ label({ for: "name", text: "Full name" }) }}
    {{ textInput({ id: "name", name: "name", required: true }) }}
  </div>
  {{ button({ text: "Save", type: "submit" }) }}
</form>

Well alles um Server gerendert gëtt, kritt de Browser purt semantescht HTML mat de Klassen-Hooks — eng JavaScript-Last vun null Bytes.

Kontrolléiert Är Aarbecht: luet d'Säit an d'Formulaire gesäit nackeg aus — genee wéi geduecht: d'Gestaltung kënnt nach. Dréckt Tab: de Fokus geet duerch all Kontroll, d'Etikett gëtt ugekënnegt an d'Schécken funktionéiert. D'Verhalen ass fäerdeg; d'Ausgesi ass Är a kënnt als Nächst.

Schrëtt 4 — Gestalt et

Gestalt d'Hooks — .button, .text-input, .label, .field — an Ärem Stylesheet, oder verlinkt e fäerdegt Thema an Ärem Basis-Layout:

<link rel="stylesheet" href="/themes/united-kingdom-government-digital-service.css" />

Schrëtt 5 — Alles am Aktioun gesinn

Nunjucks + Eleventy Beispill-App baut de ganze Katalog als statesch Websäit mat Demosäiten pro Komponent:

git clone https://github.com/LilyDesignSystem/lily-design-system
cd lily-design-system/lily-design-system-nunjucks-eleventy-examples
pnpm install && pnpm run dev

Nächst Schrëtt

Froen ënnerwee? D'Hëllefsäit ass voller Äntwerten — a wann e Schrëtt méi kloer kéint sinn, soot et eis a mir verbesseren den Tutorial gär.