Tutorial Nunjucks

Makro dirender pelayan untuk Eleventy, Express atau mana-mana saluran templat Node — pendekatan gaya GOV.UK, dengan katalog dan cangkuk kelas Lily.

Apa yang akan anda bina

Borang hubungan kecil dirender pelayan — input berlabel, butang hantar, muatan JavaScript sifar — mula-mula kosong, kemudian digayakan, dalam kira-kira 10 minit.

Sebelum anda bermula

Anda memerlukan git, Node 22 atau lebih baharu, dan pnpm 10 atau lebih baharu. Mana-mana saluran Nunjucks boleh digunakan — Eleventy, Express atau Nunjucks biasa.

Langkah 1 — Dapatkan kod

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

Setiap komponen ialah direktori dalam components/ dengan macro.njk, ujiannya dan dokumennya — contohnya components/button/macro.njk. Halakan pemuat Nunjucks anda ke components/ (dalam Eleventy, tambah ke laluan includes) dan import apa yang anda perlukan.

Langkah 2 — Komponen pertama anda

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

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

Memaparkan <button class="button" type="submit">Save</button>. Makro mengambil satu objek params: text (dilepaskan) atau html (mentah), type, label untuk aria-labeldan penambah cangkuk kelas.

Langkah 3 — Gubah borang kecil

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

Kerana semuanya dirender di pelayan, pelayar menerima HTML semantik tulen dengan cangkuk kelas — muatan JavaScript sifar bait.

Semak kerja anda: muat halaman dan borang kelihatan biasa sahaja — tepat seperti dimaksudkan: penggayaan masih di hadapan. Tekan Tab: fokus bergerak melalui setiap kawalan, label diumumkan dan penghantaran berfungsi. Tingkah laku sudah siap; rupanya milik anda dan itu seterusnya.

Langkah 4 — Gayakan

Gayakan cangkuk — .button, .text-input, .label, .field — dalam helaian gaya anda, atau pautkan tema siap pakai dalam susun atur asas anda:

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

Langkah 5 — Lihat semuanya berfungsi

Aplikasi contoh Nunjucks + Eleventy membina katalog penuh sebagai tapak statik dengan halaman demo bagi setiap komponen:

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

Langkah seterusnya

  • Tema — termasuk corak kuki Eleventy untuk penukaran tema SSR tanpa kelipan.
  • Pembantu keutamaan — bahasa dan saiz teks.
  • Katalog komponen — prop, ARIA dan papan kekunci bagi setiap komponen.

Ada soalan di sepanjang jalan? halaman bantuan penuh dengan jawapan — dan jika sesuatu langkah boleh dijelaskan lagi, beritahu kami dan kami dengan senang hati akan memperbaiki tutorial.