Tutorial Nunjucks

Macro renderizzate lato server per Eleventy, Express o qualsiasi pipeline di template Node — l'approccio in stile GOV.UK, con il catalogo e gli hook di classe di Lily.

Cosa costruirai

Un piccolo modulo di contatto renderizzato lato server — campo con etichetta, pulsante di invio, zero JavaScript inviato — prima spoglio, poi stilizzato, in circa 10 minuti.

Prima di iniziare

Servono git, Node 22 o successivo e pnpm 10 o successivo. Va bene qualsiasi pipeline Nunjucks — Eleventy, Express o Nunjucks semplice.

Passo 1 — Ottieni il codice

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

Ogni componente è una directory in components/ con un macro.njk, il suo test e la sua documentazione — ad esempio components/button/macro.njk. Punta il tuo loader Nunjucks a components/ (in Eleventy, aggiungilo al percorso degli include) e importa ciò che ti serve.

Passo 2 — Il tuo primo componente

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

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

Rende <button class="button" type="submit">Save</button>. Le macro prendono un unico oggetto params: text (con escape) oppure html (grezzo), type, label per un aria-labele un accodatore di hook di classe.

Passo 3 — Componi un piccolo modulo

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

Poiché tutto viene renderizzato sul server, il browser riceve HTML semantico puro con gli hook di classe — zero byte di JavaScript.

Controlla il lavoro: carica la pagina e il modulo appare spoglio — esattamente come previsto: lo stile deve ancora venire. Premi Tab: il focus si sposta su ogni controllo, l'etichetta viene annunciata e l'invio funziona. Il comportamento è fatto; l'aspetto è tuo, ed è il prossimo passo.

Passo 4 — Dagli uno stile

Stilizza gli hook — .button, .text-input, .label, .field — nel tuo foglio di stile, oppure collega un tema pronto nel layout di base:

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

Passo 5 — Guarda tutto in funzione

App di esempio Nunjucks + Eleventy costruisce l'intero catalogo come sito statico con pagine dimostrative per componente:

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

Prossimi passi

Domande lungo la strada? La pagina di aiuto è piena di risposte — e se un passo può essere più chiaro, faccelo sapere e miglioreremo volentieri il tutorial.