Lewati ke konten

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.

Terminal window
npm install @gaman/nunjucks nunjucks

Tambahkan middleware nunjucks ke aplikasi Anda:

index.ts
import { nunjucks } from "@gaman/nunjucks";
defineBootstrap((app) => {
app.mount(
nunjucks({
viewPath: "src/views", // folder template
extension: ".njk", // ekstensi file template
})
);
});

Buat file src/views/index.njk

<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>

Di route handler, gunakan Res.render():

AppRoutes.ts
route.get("/", (ctx) => {
return Res.render("index", {
title: "My First Nunjucks Page",
name: "GamanJS 🚀"
});
});
NamaTipeDefaultDeskripsi
viewPathstring"src/views"Direktori root tempat template Nunjucks berada.
env(env: Environment) => void | (env: Environment) => void[]undefinedCallback untuk mengkustomisasi instance nunjucks.Environment (misalnya menambahkan filter, global, extension). Bisa berupa fungsi tunggal atau array fungsi.
extensionstring".njk"Ekstensi default template. Jika nama template tanpa ekstensi, otomatis ditambahkan.
(opsi lain)Semua opsi dari Nunjucks ConfigureOptions kecuali express.
index.ts
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