Discover how to save hours of work by writing shared page parts just once!
Why Template partials and layouts in Express? - Purpose & Use Cases
Imagine building a website where every page has the same header, footer, and navigation menu. You have to copy and paste the same HTML code into every page file manually.
Manually copying repeated code is slow and risky. If you want to change the header, you must update every page separately. This causes mistakes and wastes time.
Template partials and layouts let you write common parts once and reuse them everywhere. When you update a partial or layout, all pages using them update automatically.
<header>...</header> <main>Page content</main> <footer>...</footer>
<%- include('header') %> <main>Page content</main> <%- include('footer') %>
This makes your website easier to build, maintain, and update by reusing shared parts efficiently.
A blog site where every post page shares the same navigation bar and footer, so changing the menu updates all posts instantly.
Manual repetition of HTML is slow and error-prone.
Partials and layouts let you reuse common page sections.
Updating one partial updates all pages using it automatically.
Practice
Solution
Step 1: Understand what partials are
Partials are small pieces of templates like headers or footers that you can reuse.Step 2: Differentiate partials from layouts
Layouts provide the main page structure, while partials are smaller reusable parts inside layouts or pages.Final Answer:
To reuse small template parts like headers or footers across pages -> Option BQuick Check:
Partials = reusable small template parts [OK]
- Confusing partials with layouts
- Thinking partials define full page structure
- Assuming partials handle backend logic
header in an EJS template?Solution
Step 1: Recall EJS partial include syntax
EJS uses<%- include('partialName') %>to include partials with unescaped output.Step 2: Check each option
<%- include('header') %>matches the correct syntax with parentheses and quotes around 'header'.Final Answer:
<%- include('header') %> -> Option AQuick Check:
EJS partial include = <%- include('name') %> [OK]
- Omitting quotes or parentheses in include
- Using <%= instead of <%- for unescaped output
- Confusing syntax with other template engines
app.set('view engine', 'ejs');
// In route handler:
res.render('index', { title: 'Home' });And the layout
layout.ejs contains:<html> <head><title><%= title %></title></head> <body> <%- body %> </body> </html>
If
index.ejs has <h1>Welcome</h1>, what will the rendered HTML look like?Solution
Step 1: Understand layout and body insertion
The layout uses<%- body %>to insert the rendered content ofindex.ejsunescaped.Step 2: Check variable substitution
The title variable is passed as 'Home', so<%= title %>becomes 'Home'. The body inserts<h1>Welcome</h1>as HTML.Final Answer:
<html><head><title>Home</title></head><body><h1>Welcome</h1></body></html> -> Option CQuick Check:
Layout inserts title and body correctly [OK]
- Using escaped output <%= body %> causing HTML to show as text
- Not passing title variable to template
- Assuming body variable is automatic without layout support
ReferenceError: body is not defined. What is the likely cause?Solution
Step 1: Understand how layouts work in Express with EJS
EJS alone does not support layouts natively; you need middleware likeexpress-ejs-layoutsto injectbodycontent.Step 2: Identify cause of ReferenceError
Ifbodyis undefined, it means the layout engine or middleware that setsbodyis missing or not configured.Final Answer:
You forgot to use a layout engine or middleware that injects the body content -> Option AQuick Check:
Missing layout middleware = body undefined error [OK]
- Assuming EJS supports layouts without extra setup
- Confusing escaped vs unescaped output errors
- Ignoring middleware installation or configuration
Solution
Step 1: Understand roles of layouts and partials
Layouts provide the main page structure; partials are reusable pieces like header and footer.Step 2: Combine layout and partials for best practice
Put header and footer partials inside the layout, then insert page-specific content in the body area.Final Answer:
Create a layout.ejs with header and footer partials included, and insert page content in a <%- body %> area -> Option DQuick Check:
Layout + partials = clean, consistent site structure [OK]
- Duplicating header/footer in every page instead of partials
- Skipping layout causing inconsistent page structure
- Mixing content and layout roles improperly
Ready to prove it?
Pass the test and this pattern moves unknown
