How to Use Pug
Pug is a powerful template engine that simplifies HTML writing with its concise and readable syntax. Here's how to get started.
Installation
To install Pug, you'll need Node.js and npm. Run the following command:
npm install pug
If you want to use Pug as a command-line tool:
npm install -g pug-cli
Basic Syntax
Tags
HTML tags are represented without angle brackets:
html
head
title My Site
body
h1 Hello World
p This is a paragraph
Attributes
Attributes are enclosed in parentheses:
a(href="https://pugjs.org", target="_blank") Pug Website
input(type="text", placeholder="Enter your name")
meta(charset="utf-8")
Classes and IDs
CSS classes and IDs use shortcuts:
// Classes
.container
.row
.col-md-6.text-center Hello
// IDs
#header Header
#footer Footer
// Combined
div#content.main-content Content
Text Content
Text can be put after the tag or indented:
// Inline text
p This is a paragraph
// Block text
p
| This is a paragraph
| with multiple lines
| of text
Advanced Features
Variables and Interpolation
// Define variables at the top
- var name = "John"
- var age = 30
p Hello, my name is #{name}
p I am #{age} years old
Conditionals
- var isLoggedIn = true
if isLoggedIn
p Welcome back!
else
p Please log in.
Loops
- var items = ["Apple", "Banana", "Orange"]
ul
each item in items
li= item
Mixins
mixin card(title, content)
.card
.card-header= title
.card-body= content
+card("Hello", "This is a card")
+card("Another Card", "More content")
Integration Examples
Using Pug with Express
// app.js
const express = require('express');
const app = express();
// Set up Pug as the template engine
app.set('view engine', 'pug');
app.set('views', './views');
app.get('/', (req, res) => {
res.render('index', {
title: 'Home Page',
message: 'Welcome to my website!'
});
});
app.listen(3000, () => {
console.log('Server running on port 3000');
});
And the corresponding Pug template:
// views/index.pug
doctype html
html
head
title= title
body
h1= message
p This is rendered using Pug!