Bird
Raised Fist0
Expressframework~5 mins

res.render for templates in Express

Choose your learning style10 modes available
Introduction

res.render helps you show web pages using templates. It fills in data and sends the final page to the browser.

When you want to show a dynamic web page with changing content.
When you separate your HTML layout from your data in your app.
When you want to reuse the same page design but with different information.
When you want to send a complete HTML page as a response to a user request.
Syntax
Express
res.render(view, [locals], callback)

view is the template file name without extension.

locals is an optional object with data to fill in the template.

Examples
Render the 'index' template without extra data.
Express
res.render('index')
Render 'profile' template and fill it with name and age.
Express
res.render('profile', { name: 'Alice', age: 30 })
Render 'error' template and handle the result with a callback.
Express
res.render('error', { message: 'Page not found' }, (err, html) => { if (err) console.error(err); else res.send(html); })
Sample Program

This Express app uses res.render to show the 'index' template. It sends a title and message to fill the page.

Express
import express from 'express';
const app = express();

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

app.get('/', (req, res) => {
  res.render('index', { title: 'Home Page', message: 'Welcome to our site!' });
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});
OutputSuccess
Important Notes

Make sure to set the template engine with app.set('view engine', 'yourEngine') before using res.render.

Templates usually live in a folder named views in your project root.

If you pass data in locals, you can use it inside your template to show dynamic content.

Summary

res.render creates a web page from a template and data.

Use it to send dynamic HTML pages to users.

Remember to set your template engine and keep templates in the views folder.

Practice

(1/5)
1. What does res.render do in an Express app?
easy
A. It creates and sends an HTML page using a template and data.
B. It sends a JSON response to the client.
C. It redirects the user to another URL.
D. It logs a message to the server console.

Solution

  1. Step 1: Understand the purpose of res.render

    res.render is used to create a web page by combining a template with data.
  2. Step 2: Identify what res.render sends to the client

    It sends the generated HTML page as the response to the user's browser.
  3. Final Answer:

    It creates and sends an HTML page using a template and data. -> Option A
  4. Quick Check:

    res.render = sends HTML page [OK]
Hint: Remember: res.render sends HTML, not JSON or redirects [OK]
Common Mistakes:
  • Confusing res.render with res.json
  • Thinking res.render redirects the user
  • Assuming res.render logs info instead of sending response
2. Which of the following is the correct syntax to render a template named 'home' with a variable 'title' set to 'Welcome'?
easy
A. res.render('home', 'title', 'Welcome');
B. res.render('home', { title: 'Welcome' });
C. res.render('home', ['title', 'Welcome']);
D. res.render('home', title = 'Welcome');

Solution

  1. Step 1: Check the method signature of res.render

    It takes the template name as first argument and an object with variables as second argument.
  2. Step 2: Match the correct object syntax

    The correct way to pass variables is using an object like { title: 'Welcome' }.
  3. Final Answer:

    res.render('home', { title: 'Welcome' }); -> Option B
  4. Quick Check:

    res.render(template, object) = correct syntax [OK]
Hint: Pass variables as an object, not as separate arguments [OK]
Common Mistakes:
  • Passing variables as separate arguments instead of an object
  • Using array instead of object for variables
  • Assigning variables inside the argument list incorrectly
3. Given this Express code snippet, what will the user see when visiting '/'?
app.get('/', (req, res) => {
  res.render('index', { name: 'Alice' });
});
Assuming the 'index' template contains: <h1>Hello, <%= name %>!</h1>
medium
A.

Hello, Alice!

B.

Hello, <%= name %>!

C. Error: Template not found
D.

Hello, !

Solution

  1. Step 1: Understand how res.render passes data to template

    The object { name: 'Alice' } provides the value for name in the template.
  2. Step 2: Evaluate the template output

    The template uses <%= name %> to insert the value 'Alice' into the HTML.
  3. Final Answer:

    <h1>Hello, Alice!</h1> -> Option A
  4. Quick Check:

    Template variable replaced correctly =

    Hello, Alice!

    [OK]
Hint: Variables in template replaced by object keys passed to res.render [OK]
Common Mistakes:
  • Expecting raw template tags to appear in output
  • Assuming missing template causes silent empty output
  • Confusing template syntax with HTML escaping
4. What is wrong with this Express code snippet?
app.get('/about', (req, res) => {
  res.render('about', title: 'About Us');
});
medium
A. res.render cannot be used inside app.get routes.
B. The template name 'about' should be a variable, not a string.
C. The second argument to res.render should be an object, but it's missing curly braces.
D. The route path '/about' is invalid.

Solution

  1. Step 1: Check the syntax of res.render arguments

    The second argument must be an object with key-value pairs, but here it's written without curly braces.
  2. Step 2: Identify the correct object syntax

    It should be { title: 'About Us' } to pass variables properly.
  3. Final Answer:

    The second argument to res.render should be an object, but it's missing curly braces. -> Option C
  4. Quick Check:

    res.render second argument = object with braces [OK]
Hint: Always wrap variables in an object with curly braces for res.render [OK]
Common Mistakes:
  • Omitting curly braces around variables object
  • Passing variables as separate arguments
  • Misunderstanding route handler usage
5. You want to render a 'profile' template that shows a user's name and age. The user data is in an object user = { name: 'Bob', age: 30 }. Which code correctly renders the template passing the user data so the template can access name and age directly?
hard
A. res.render('profile', ['name', user.name, 'age', user.age]);
B. res.render('profile', { user });
C. res.render('profile', { name: user, age: user.age });
D. res.render('profile', { name: user.name, age: user.age });

Solution

  1. Step 1: Understand how template variables are accessed

    The template expects variables name and age directly, not inside a nested object.
  2. Step 2: Pass variables as separate keys in an object

    Passing { name: user.name, age: user.age } makes name and age available directly in the template.
  3. Final Answer:

    res.render('profile', { name: user.name, age: user.age }); -> Option D
  4. Quick Check:

    Pass variables as keys for direct template access [OK]
Hint: Pass each variable separately for direct template use [OK]
Common Mistakes:
  • Passing the whole user object instead of separate keys
  • Passing variables as an array instead of object
  • Assuming template can access nested object keys without dot notation
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