Bird
Raised Fist0
Expressframework~30 mins

EJS template setup in Express - Mini Project: Build & Apply

Choose your learning style10 modes available
EJS Template Setup
📖 Scenario: You are building a simple Express web server that uses EJS templates to render HTML pages dynamically.This project will guide you through setting up EJS as the view engine and creating a basic template.
🎯 Goal: Set up an Express app to use EJS templates and create a simple EJS file that displays a greeting message.
📋 What You'll Learn
Create an Express app instance
Set EJS as the view engine
Create a views folder with an EJS template file
Render the EJS template from a route
💡 Why This Matters
🌍 Real World
Web developers use EJS templates with Express to create dynamic web pages that change based on data or user input.
💼 Career
Knowing how to set up and use EJS with Express is a common skill required for backend web development jobs using Node.js.
Progress0 / 4 steps
1
Create Express app instance
Write code to import express and create a variable called app by calling express().
Express
Hint

Use require('express') to import Express and then call it to create the app.

2
Set EJS as the view engine
Add code to set the view engine of app to 'ejs' using app.set('view engine', 'ejs').
Express
Hint

Use app.set method to specify the view engine as 'ejs'.

3
Create EJS template file
Create a file named index.ejs inside a folder called views. Inside index.ejs, write HTML code with a <h1> tag that displays the text Hello, EJS!.
Express
Hint

Inside the views folder, create index.ejs with a simple <h1> tag containing Hello, EJS!.

4
Render EJS template from route
Add a route handler for GET requests to '/' on app that calls res.render('index') to render the index.ejs template.
Express
Hint

Use app.get to create a route for '/' and call res.render('index') inside the handler.

Practice

(1/5)
1. What does the line app.set('view engine', 'ejs') do in an Express app?
easy
A. It creates a new EJS file in the views folder.
B. It installs the EJS package automatically.
C. It tells Express to use EJS as the template engine for rendering views.
D. It starts the Express server with EJS support.

Solution

  1. Step 1: Understand the purpose of app.set

    This method configures Express settings, here it sets the template engine.
  2. Step 2: Identify what 'view engine' setting does

    Setting 'view engine' to 'ejs' tells Express to use EJS to render view files automatically.
  3. Final Answer:

    It tells Express to use EJS as the template engine for rendering views. -> Option C
  4. Quick Check:

    app.set('view engine', 'ejs') = Use EJS [OK]
Hint: Remember: app.set('view engine', 'ejs') enables EJS rendering [OK]
Common Mistakes:
  • Thinking it installs EJS automatically
  • Confusing it with creating files
  • Assuming it starts the server
2. Which of the following is the correct way to render an EJS template named index.ejs with Express?
easy
A. res.render('index.ejs')
B. res.view('index')
C. res.send('index.ejs')
D. res.render('index')

Solution

  1. Step 1: Recall how Express renders templates

    Express uses res.render with the template name without extension.
  2. Step 2: Identify correct syntax

    Passing 'index' (without '.ejs') is correct; Express adds the extension automatically.
  3. Final Answer:

    res.render('index') -> Option D
  4. Quick Check:

    Use res.render('templateName') without extension [OK]
Hint: Use template name without extension in res.render() [OK]
Common Mistakes:
  • Including the .ejs extension in res.render()
  • Using res.send() instead of res.render()
  • Using non-existent res.view() method
3. Given this Express code snippet, what will be the output in the browser?
app.set('view engine', 'ejs');

app.get('/', (req, res) => {
  res.render('greeting', { name: 'Sam' });
});

And the greeting.ejs file contains:
<h1>Hello, <%= name %>!</h1>
medium
A.

Hello, <%= name %>!

B.

Hello, Sam!

C. Error: name is not defined
D.

Hello, !

Solution

  1. Step 1: Understand data passing to EJS

    The object { name: 'Sam' } passes 'Sam' as the value for 'name' in the template.
  2. Step 2: Interpret EJS syntax in template

    <%= name %> outputs the value of 'name' safely, so it becomes 'Sam'.
  3. Final Answer:

    <h1>Hello, Sam!</h1> -> Option B
  4. Quick Check:

    EJS <%= %> inserts variable value [OK]
Hint: EJS <%= %> inserts passed data values directly [OK]
Common Mistakes:
  • Expecting raw template tags to show in output
  • Forgetting to pass data object to render
  • Confusing <%= %> with <% %> (no output)
4. What is wrong with this Express setup for EJS?
const express = require('express');
const app = express();

app.set('view engine', 'ejs');

app.get('/', (req, res) => {
  res.render('home.ejs');
});
medium
A. The template name in res.render should not include the '.ejs' extension.
B. EJS must be required explicitly with require('ejs').
C. app.set should be called after app.get.
D. res.render cannot be used inside app.get.

Solution

  1. Step 1: Check usage of res.render

    res.render expects the template name without the file extension.
  2. Step 2: Identify the error in code

    Passing 'home.ejs' includes extension, which causes Express to look for 'home.ejs.ejs'.
  3. Final Answer:

    The template name in res.render should not include the '.ejs' extension. -> Option A
  4. Quick Check:

    Use res.render('templateName') without extension [OK]
Hint: Never add .ejs extension in res.render() call [OK]
Common Mistakes:
  • Adding .ejs extension in res.render()
  • Thinking require('ejs') is mandatory
  • Changing app.set order unnecessarily
5. You want to render a list of users dynamically in an EJS template. Which setup correctly passes the users array and renders it inside users.ejs?
const users = ['Anna', 'Bob', 'Cara'];

app.get('/users', (req, res) => {
  // What goes here?
});

Choose the correct code to replace // What goes here?.
hard
A. res.render('users', { users: users });
B. res.render('users.ejs', { users });
C. res.send('users', { users });
D. res.render('users', users);

Solution

  1. Step 1: Understand how to pass data to EJS

    Data must be passed as an object with keys matching template variables.
  2. Step 2: Check correct syntax for res.render

    Use res.render('templateName', { key: value }) without file extension.
  3. Final Answer:

    res.render('users', { users: users }); -> Option A
  4. Quick Check:

    Pass data as object in res.render(template, data) [OK]
Hint: Pass data as object: res.render('name', {key: value}) [OK]
Common Mistakes:
  • Including .ejs extension in template name
  • Passing array directly instead of inside object
  • Using res.send instead of res.render
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard