Nunjucks
@gaman/nunjucks
adalah middleware resmi untuk integrasi Nunjucks sebagai view engine di framework GamanJS.
Dengan ini Anda bisa merender file template .njk
(atau ekstensi lain) langsung dari controller/handler menggunakan sistem view bawaan GamanJS.
Install
Section titled “Install”npm install @gaman/nunjucks nunjucks
pnpm install @gaman/nunjucks nunjucks
yarn install @gaman/nunjucks nunjucks
bun install @gaman/nunjucks nunjucks
Cara Pakai
Section titled “Cara Pakai”Register Nunjucks
Section titled “Register Nunjucks”Tambahkan middleware nunjucks ke aplikasi Anda:
import { nunjucks } from "@gaman/nunjucks";
defineBootstrap((app) => { app.mount( nunjucks({ viewPath: "src/views", // folder template extension: ".njk", // ekstensi file template }) );});
Membuat Template
Section titled “Membuat Template”Buat file src/views/index.njk
<!DOCTYPE html><html> <head> <title>{{ title }}</title> </head> <body> <h1>Hello, {{ name }}!</h1> </body></html>
Render dari Route
Section titled “Render dari Route”Di route handler, gunakan Res.render()
:
route.get("/", (ctx) => { return Res.render("index", { title: "My First Nunjucks Page", name: "GamanJS 🚀" });});
Config Options
Section titled “Config Options”Nama | Tipe | Default | Deskripsi |
---|---|---|---|
viewPath | string | "src/views" | Direktori root tempat template Nunjucks berada. |
env | (env: Environment) => void | (env: Environment) => void[] | undefined | Callback untuk mengkustomisasi instance nunjucks.Environment (misalnya menambahkan filter, global, extension). Bisa berupa fungsi tunggal atau array fungsi. |
extension | string | ".njk" | Ekstensi default template. Jika nama template tanpa ekstensi, otomatis ditambahkan. |
(opsi lain) | Semua opsi dari Nunjucks ConfigureOptions kecuali express . |
Cara: Menambahkan Filter & Global
Section titled “Cara: Menambahkan Filter & Global”import { nunjucks } from "@gaman/nunjucks";
defineBootstrap((app) => { app.mount( nunjucks({ env: (env) => { env.addFilter("upper", (str: string) => str.toUpperCase()); env.addGlobal("appName", "GamanJS"); }, }) );});
views/index.njk:
<h1>{{ appName | upper }}</h1>
Output:
<h1>GAMANJS</h1>
Silakan baca dokumentasi lebih detail tentang Nunjucks