It’s possible to pass variables from your server into Pug for dynamic content or script generation. Pug templates can access variables passed to the res.render
function in Express (or pug.renderFile
if you are not using Express, the arguments are identical).
let colors = ["Red", "Green", "Blue"]; let langs = ["HTML", "CSS", "JS"]; let title = "My Cool Website"; let locals = { siteColors: colors, siteLangs: langs, title: title }; res.render("index", locals);
Inside your index.pug
file, you then have access to the locals
variable by way of its keys. The names of the variables in your Pug file become siteColors
and siteNames
.
To set the entirety of an HTML element equal to a variable, use the equals operator =
to do so. If your variable needs to be embedded inline, use bracket syntax #{}
to do so.
doctype html html head title= title body p My favorite color is #{siteColors[0]}. p Here's a list of my favorite coding languages ul each language in siteLangs li= language
<!DOCTYPE html> <html> <head> <title>My Cool Website</title> </head> <body> <p>My favorite color is Red.</p> <p>Here's a list of my favorite coding languages</p> <ul> <li>HTML</li> <li>CSS</li> <li>JS</li> </ul> </body> </html>