Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

Sorry, you do not have permission to ask a question, You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please type your username.

Please type your E-Mail.

Please choose an appropriate title for the post.

Please choose the appropriate section so your post can be easily searched.

Please choose suitable Keywords Ex: post, video.

Browse

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Logo

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Navigation

  • Home
  • About Us
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • About Us
  • Contact Us
Home/ Questions/Q 6968

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise Latest Questions

Author
  • 60k
Author
Asked: November 27, 20242024-11-27T11:27:07+00:00 2024-11-27T11:27:07+00:00

Introduction to EJS: A Guide to Building Dynamic Web Applications

  • 60k

Introduction

Embedded JavaScript, or EJS, is a simple and direct templating language that enables JavaScript to generate HTML. It's frequently used in Express.js, a Node.js framework for creating web applications, but it can also be used in other JavaScript environments.

This article will cover the fundamentals of EJS and how to utilize EJS to build dynamic web applications.

Installation

To use EJS, you'll need to have Node.js and npm (Node Package Manager) installed on your computer. Once that's done, you can create a new Node.js project by running the following command in your terminal:

npm init -y 
Enter fullscreen mode Exit fullscreen mode

This will also create a new package.json file in the root directory of your project, which you can use to manage your dependencies.

To continue, you will have to install the Express and EJS packages by entering the following npm commands also in your terminal:

npm install express # install express # and npm install ejs # install ejs 
Enter fullscreen mode Exit fullscreen mode

This will add Express and EJS as dependencies to your project’s package.json.

How Do EJS Templates Look?

EJS templates have additional unique tags that let you include dynamic content, but they still look similar to regular HTML files. This makes EJS templates a fantastic option because anyone familiar with HTML can easily understand and work with them.

Examples of these extra tags are:

  • <% and %>: These tags allow JavaScript code to run without outputting anything to the template. For example, you can use these tags to define variables or call functions.
  • <%= and %>: These tags are used to output the result of a JavaScript expression to the template. For example, you can use these tags to insert data into the template.
  • <%- and %>: These tags are used to output the result of a JavaScript expression to the template. However, unlike <%= and %> tags, they do not escape the output.
  • <%# and %>: These tags add template comments.

Here's an example of what an EJS template looks like:

<!DOCTYPE html> <html> <head>   <title>My List</title> </head> <body>   <% var message = "Hello, World!"; %>   <h1><%= message %></h1>   <%# This is a comment; it will not be included in the final output %>   <% if (items.length === 0) { %>     <p>No items to display.</p>   <% } %> </body> </html> 
Enter fullscreen mode Exit fullscreen mode

As you progress through the article, you will learn how to utilize these tags in your code.

Setting Up EJS in Express.js

To set up EJS in Express.js, first, require the express module to initialize an Express.js app. Then, set ejs as the view engine using the app.set() method:

const express = require('express'); const app = express();  // Setting EJS as the view engine app.set('view engine', 'ejs');  //Server is listening on port 5000 app.listen(5000, () => {     console.log(`App listening at port 5000`);   }) 
Enter fullscreen mode Exit fullscreen mode

After setting the view engine to ejs, you can now create a new folder in the root directory of your project called views and add your EJS templates there.

💡 It's important to remember that EJS always looks for templates in the views directory. As a result, it is critical that you always keep your templates in this directory so that the EJS engine can find and process them.

For example, An index.ejs in your views folder will be rendered using the following code in a route:

const express = require('express'); const app = express();  app.set('view engine', 'ejs');  //Rendering index.ejs  app.get('/', (req, res) => {     res.render('index'); });  app.listen(5000, () => {     console.log(`App listening at port 5000`);   }) 
Enter fullscreen mode Exit fullscreen mode

The render function, provided by Express, will look for a template with the same name as the first argument you pass to it in the views folder that is index and renders it when the root route is accessed using the view engine you set up earlier.

Passing Data to EJS Templates

EJS can pass data to templates and use that data to generate dynamic HTML. You can pass data to a template by providing an object as the second argument to the render function. For instance, let's say you want to pass a variable called name to your index.ejs template:

app.get('/', (req, res) => {     res.render('index', { name: 'Alice' }); }); 
Enter fullscreen mode Exit fullscreen mode

You can use the variable in your index.ejs template in this way:

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>EJS FOR BEGINNERS</title> </head> <body>     <h1>Hello <%= name %>!</h1>    </body> </html> 
Enter fullscreen mode Exit fullscreen mode

When the template is rendered, that is, when the script is executed, the name variable will be replaced with the value(Alice) passed to the render function.

Using EJS to Include Reusable Template Components

EJS also allows you to combine different templates for different sections of your code, like your head, header, and footer sections.

You can add .ejs files to a current template using the <%- include (’file.ejs’) %> statement.

For example, if you have a template called header.ejs that you want to include in your index.ejs template, you can use the following code

in your index.ejs template:

// header.ejs <header>     <nav>         <ul>             <li><a href="/">Home</a></li>             <li><a href="/about">About</a></li>             <li><a href="/contact">Contact</a></li>         </ul>     </nav>     <h1>My Website</h1> </header> 
Enter fullscreen mode Exit fullscreen mode

// index.ejs <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>EJS FOR BEGINNERS</title> </head> <body>         <header>                     <%- include ('header.ejs') %>         </header>     <h1>Hello <%= name %>!</h1>    </body> </html> 
Enter fullscreen mode Exit fullscreen mode

This will include the contents of the header.ejs template to that point in the index.ejs template.

It is common practice to save templates that you will want to reuse across multiple pages in a partials subdirectory in the views directory.

To include the header in your code after doing this, attach the file path to the former syntax:

<%- include ('partials/header') %> 
Enter fullscreen mode Exit fullscreen mode

The **<%- include %>** tag makes it simple to reuse common HTML elements across multiple pages or views, simplifies code maintenance, and preserves a consistent look across your application.

Iterating Over Data in EJS

EJS also allows you to use JavaScript's looping statements to generate dynamic HTML. To understand this better, update your express app to hold some array containing data. For example:

const express = require('express'); const app = express();  app.set('view engine', 'ejs');  //Rendering index.ejs  app.get('/', (req, res) => {     res.render('index'); });  app.listen(5000, () => {     console.log(`App listening at port 5000`);   }) 
Enter fullscreen mode Exit fullscreen mode

Then, update your **index.ejs** file to display the array:

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>EJS FOR BEGINNERS</title> </head> <body>         <header>                     <%- include ('header.ejs') %>         </header>     <h1>Hello <%= name %>!</h1>        <ul>     <% for (let i = 0; i < data.length; i++) { %>         <li><%= data[i] %></li>     <% } %>     </ul> </body> </html> 
Enter fullscreen mode Exit fullscreen mode

In this code block, the <%…%> EJS tag is used to incorporate pure JavaScript into the template; this JavaScript takes the form of a for loop that iterates over the elements in the data array. Each element of the array is displayed using the <li> tag, with the EJS expression <%= data[i] %> used to output the value of the data[i] variable.

Conditional Statements in EJS

You can also use JavaScript conditional statements to make your express app more dynamic. With conditional statements like if..else statements, You can choose to display some part of your app or not. That's the power of being dynamic given to you by EJS!

To understand how to use the if-else JavaScript statement to conditionally render certain parts of the template, set up your express app to contain a variable numberOfNames. For example:

const express = require('express'); const app = express();  //Adding test data  const data = ["ada", "abba", "goodness", "david", "patrick"]  //Setting the view engine to ejs app.set('view engine', 'ejs');  let numberOfNames = data.length;  //Rendering index.ejs  app.get('/', (req, res) => {     res.render('index', {name:"Alice", data : data, numberOfNames: numberOfNames}); });  app.listen(5000, () => {     console.log(`App listening at port 5000`);   })  
Enter fullscreen mode Exit fullscreen mode

The variable numberOfNames created below the for loop saves the number of elements in the data array. Then, update your index.ejs file to perform an action based on some condition about the numberOfNames variable.

Like so:

<html lang="en"> <head>     <meta charset="UTF-8">     <title>EJS FOR BEGINNERS</title> </head> <body>         <header>                     <%- include ('header.ejs') %>         </header>     <h1>Hello <%= name %>!</h1>        <ul>     <% for (let i = 0; i < data.length; i++) { %>         <li><%= data[i] %></li>     <% } %>     </ul>     <% if (numberOfNames >= 5) {%>         <p> There are at least 5 people on the list </p>     <% } else { %>         <p> There are less than 5 people on the list</p>     <% } %> </body> </html> 
Enter fullscreen mode Exit fullscreen mode

The if statement in this code block displays information about the number of names conditionally. The EJS tags surrounding the if statement control the JavaScript flow and allow the code to make decisions based on specified conditions.

You can also see how the displayed information changes when you reduce the number of elements in the data array to less than 5. This demonstrates how EJS can dynamically adjust the output based on the input data.

Conclusion

EJS is a simple and powerful templating language that allows you to generate dynamic HTML using JavaScript. It is easy to set up and use and is an excellent choice for building web applications with Node.js and Express.js. By understanding the basics of EJS, including how to pass data to templates, include other templates, and use looping and conditional statements, you can build more dynamic and interactive web applications.

expressjavascriptnodewebdev
  • 0 0 Answers
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

Sidebar

Ask A Question

Stats

  • Questions 4k
  • Answers 0
  • Best Answers 0
  • Users 1k
  • Popular
  • Answers
  • Author

    How to ensure that all the routes on my Symfony ...

    • 0 Answers
  • Author

    Insights into Forms in Flask

    • 0 Answers
  • Author

    Kick Start Your Next Project With Holo Theme

    • 0 Answers

Top Members

Samantha Carter

Samantha Carter

  • 0 Questions
  • 20 Points
Begginer
Ella Lewis

Ella Lewis

  • 0 Questions
  • 20 Points
Begginer
Isaac Anderson

Isaac Anderson

  • 0 Questions
  • 20 Points
Begginer

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

Querify Question Shop: Explore Expert Solutions and Unique Q&A Merchandise

Querify Question Shop: Explore, ask, and connect. Join our vibrant Q&A community today!

About Us

  • About Us
  • Contact Us
  • All Users

Legal Stuff

  • Terms of Use
  • Privacy Policy
  • Cookie Policy

Help

  • Knowledge Base
  • Support

Follow

© 2022 Querify Question. All Rights Reserved

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.