Template partials and layouts help you reuse parts of your web pages easily. They keep your code clean and save time by avoiding repetition.
Template partials and layouts in Express
app.set('view engine', 'ejs'); // In your main layout file (e.g., layout.ejs): <!DOCTYPE html> <html> <head> <title><%= title %></title> </head> <body> <%- include('partials/header') %> <main> <%- body %> </main> <%- include('partials/footer') %> </body> </html>
Use <%- include('path/to/partial') %> to insert partial templates.
Layouts usually have a placeholder like <%- body %> where page content goes.
<%- include('partials/navbar') %><!-- layout.ejs -->
<html>
<body>
<%- include('partials/header') %>
<%- body %>
<%- include('partials/footer') %>
</body>
</html><!-- page.ejs -->
<h1>Welcome!</h1>
<p>This is the home page.</p>This Express app uses EJS templates with a layout and partials for header and footer. The index.ejs page uses the layout, which includes the header and footer partials. This keeps the page structure consistent and easy to update.
const express = require('express'); const app = express(); const path = require('path'); app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); app.get('/', (req, res) => { res.render('index', {}, (err, indexHtml) => { if (err) { console.log(err); return res.status(500).send('Something went wrong'); } res.render('layout', { title: 'Home Page', body: indexHtml }); }); }); app.listen(3000, () => { console.log('Server running on http://localhost:3000'); }); // Directory structure: // views/ // layout.ejs // index.ejs // partials/ // header.ejs // footer.ejs // layout.ejs content: // <!DOCTYPE html> // <html lang="en"> // <head> // <meta charset="UTF-8"> // <meta name="viewport" content="width=device-width, initial-scale=1.0"> // <title><%= title %></title> // </head> // <body> // <%- include('partials/header') %> // <main> // <%- body %> // </main> // <%- include('partials/footer') %> // </body> // </html> // index.ejs content: // <h1>Welcome to the Home Page</h1> // <p>This page uses a layout and partials.</p> // partials/header.ejs content: // <header> // <h2>Site Header</h2> // </header> // partials/footer.ejs content: // <footer> // <p>Site Footer © 2024</p> // </footer>
Make sure your partials folder is inside your views folder for easy includes.
Use <%- include() %> to render raw HTML from partials, not escaped text.
Layouts help keep your site consistent and make updates faster.
Template partials let you reuse small parts like headers and footers.
Layouts provide a main structure where page content fits in.
Using both keeps your code clean and your site consistent.