Tutorial Nunjucks

Makro yang dirender di server untuk Eleventy, Express, atau jalur pipa templat Node mana pun — pendekatan gaya GOV.UK, dengan katalog dan kait kelas Lily.

Apa yang akan Anda bangun

Formulir kontak kecil yang dirender di server — kolom berlabel, tombol kirim, nol muatan JavaScript — pertama polos, lalu bergaya, dalam sekitar 10 menit.

Sebelum memulai

Anda memerlukan git, Node 22 atau lebih baru, dan pnpm 10 atau lebih baru. Jalur pipa Nunjucks mana pun bisa — Eleventy, Express, atau Nunjucks biasa.

Langkah 1 — Dapatkan kodenya

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 adalah direktori di components/ dengan sebuah macro.njk, pengujiannya, dan dokumentasinya — misalnya components/button/macro.njk. Arahkan pemuat Nunjucks Anda ke components/ (di Eleventy, tambahkan ke jalur includes) dan impor yang Anda perlukan.

Langkah 2 — Komponen pertama Anda

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

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

Merender <button class="button" type="submit">Save</button>. Makro menerima satu objek params: text (di-escape) atau html (mentah), type, label untuk sebuah aria-labeldan penambah kait kelas.

Langkah 3 — Susun formulir 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>

Karena semuanya dirender di server, peramban menerima HTML semantik murni dengan kait kelas — muatan JavaScript nol byte.

Periksa pekerjaan Anda: muat halaman dan formulir tampak polos — persis seperti yang dimaksudkan: penataan gaya masih akan datang. Tekan Tab: fokus berpindah melalui setiap kontrol, label diumumkan, dan pengiriman berfungsi. Perilakunya selesai; tampilan adalah milik Anda dan menjadi langkah berikutnya.

Langkah 4 — Beri gaya

Beri gaya pada kait — .button, .text-input, .label, .field — di lembar gaya Anda, atau tautkan tema siap pakai di tata letak dasar Anda:

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

Langkah 5 — Lihat semuanya bekerja

Aplikasi contoh Nunjucks + Eleventy membangun katalog lengkap sebagai situs statis dengan halaman demonstrasi per 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 berikutnya

  • Tema — termasuk pola cookie Eleventy untuk pengalihan tema SSR tanpa kedipan.
  • Pembantu preferensi — bahasa dan ukuran teks.
  • Katalog komponen — properti, ARIA, dan papan ketik per komponen.

Ada pertanyaan di tengah jalan? Halaman bantuan penuh jawaban — dan jika suatu langkah bisa lebih jelas, beri tahu kami dan kami dengan senang hati akan memperbaiki tutorial ini.