Nunjucks-handleiding

Server-gerenderde macro's voor Eleventy, Express of elke Node-templatepijplijn — de aanpak in GOV.UK-stijl, met Lily's catalogus en klassehaken.

Wat je gaat bouwen

Een klein server-gerenderd contactformulier — invoerveld met label, verzendknop, nul JavaScript-lading — eerst kaal, dan vormgegeven, in ongeveer 10 minuten.

Voordat je begint

Je hebt git, Node 22 of nieuwer en pnpm 10 of nieuwer nodig. Elke Nunjucks-pijplijn werkt — Eleventy, Express of gewone Nunjucks.

Stap 1 — Haal de code op

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

Elke component is een map in components/ met een macro.njk, zijn test en zijn documentatie — bijvoorbeeld components/button/macro.njk. Wijs je Nunjucks-loader naar components/ (in Eleventy voeg je het toe aan het includes-pad) en importeer wat je nodig hebt.

Stap 2 — Je eerste component

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

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

Rendert <button class="button" type="submit">Save</button>. Macro's nemen één params-object: text (geëscaped) of html (rauw), type, label voor een aria-labelen een klassehaak-toevoeger.

Stap 3 — Stel een klein formulier samen

{% 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>

Omdat alles op de server wordt gerenderd, krijgt de browser pure semantische HTML met de klassehaken — een JavaScript-lading van nul bytes.

Controleer je werk: laad de pagina en het formulier ziet er kaal uit — precies zoals bedoeld: de vormgeving komt nog. Druk op Tab: de focus beweegt door elk bedieningselement, het label wordt voorgelezen en verzenden werkt. Het gedrag is klaar; het uiterlijk is aan jou en komt hierna.

Stap 4 — Geef het vorm

Geef de haken vorm — .button, .text-input, .label, .field — in je stylesheet, of koppel een kant-en-klaar thema in je basislayout:

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

Stap 5 — Zie alles werken

Nunjucks + Eleventy voorbeeld-app bouwt de volledige catalogus als statische site met demopagina's per component:

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

Volgende stappen

Vragen onderweg? De helppagina staat vol antwoorden — en als een stap duidelijker kan, laat het ons weten en we verbeteren de handleiding graag.