Nunjucks-handledning

Serverrenderade makron för Eleventy, Express eller valfri Node-mallpipeline — GOV.UK-stilens tillvägagångssätt, med Lilys katalog och klasskrokar.

Det här bygger du

Ett litet serverrenderat kontaktformulär — fält med etikett, skicka-knapp, noll JavaScript-last — först naket, sedan formgivet, på ungefär 10 minuter.

Innan du börjar

Du behöver git, Node 22 eller senare och pnpm 10 eller senare. Alla Nunjucks-pipelines fungerar — Eleventy, Express eller ren Nunjucks.

Steg 1 — Hämta koden

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

Varje komponent är en katalog i components/ med en macro.njk, sitt test och sin dokumentation — till exempel components/button/macro.njk. Peka din Nunjucks-laddare på components/ (i Eleventy, lägg till den i include-sökvägen) och importera det du behöver.

Steg 2 — Din första komponent

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

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

Renderar <button class="button" type="submit">Save</button>. Makron tar ett enda params-objekt: text (escapad) eller html (rå), type, label för en aria-labeloch en tillägg av klasskrok.

Steg 3 — Sätt ihop ett litet formulär

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

Eftersom allt renderas på servern får webbläsaren ren semantisk HTML med klasskrokarna — noll byte JavaScript-last.

Kontrollera ditt arbete: ladda sidan så ser formuläret kargt ut — precis som tänkt: formgivningen återstår. Tryck på Tab: fokus flyttas genom varje kontroll, etiketten läses upp och inskickning fungerar. Beteendet är klart; utseendet är ditt och kommer härnäst.

Steg 4 — Formge det

Formge krokarna — .button, .text-input, .label, .field — i din stilmall, eller länka ett färdigt tema i din baslayout:

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

Steg 5 — Se allt fungera

Exempelappen Nunjucks + Eleventy bygger hela katalogen som en statisk webbplats med demosidor per 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ästa steg

Frågor på vägen? Hjälpsidan är full av svar — och om ett steg kan bli tydligare, berätta för oss så förbättrar vi gärna handledningen.