Open In App

How to Render a variable as HTML in EJS ?

Last Updated : 24 Jul, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

In the EJS, the rendering of a variable as HTML consists of a specific tage through which we can control how the content is displayed. This tag involves, <% code %> that allows the execution of code without rendering, <%= code %> escapes and prints the code as HTML, while <%- code %> renders the code as HTML without escaping special characters. In this article, we will see the practical implementation using these tags to Render a variable as HTML in EJS.

Approaches to Render a variable as HTML in EJS:

  • Embed the variable directly within HTML tags using EJS delimiters: <%= variable %>.
  • Use conditional statements to render HTML based on the variable's value conditionally.
  • Utilize EJS filters to modify the variable before rendering it as HTML.
  • Incorporate JavaScript functions to manipulate the variable and generate HTML dynamically.
  • Apply EJS partials or include rendering reusable HTML components with the variable data embedded.

Steps to Render a Variable as HTML in EJS:

Step 1: Create a backend server using the following command in your project folder.

npm init -y

Step 2: Install the necessary package in your server using the following command.

npm i express ejs

Project Structure:

PS

The updated dependencies in package.json file will look like:

"dependencies": {  
"express": "^4.18.2",
"ejs": "^3.1.9",
}

Example: Below is an example to render a variable as HTML in EJS.

HTML
<!DOCTYPE html>

<head>
	<title>
		<%= geeksData.title %>
	</title>
</head>

<body>
	<h1 style="color: green;">
		<%- geeksData.title %>
	</h1>
	<p>
		<%= geeksData.description %>
	</p>
	<form action="/" method="post">
		<label for="inputTitle">New Title:</label>
		<input type="text" id="inputTitle" name="inputTitle" required>
		<label for="inputDescription">
			New Description:
		</label>
		<input type="text"
			id="inputDescription"
			name="inputDescription"
			required>
		<label for="inputUrl">New URL:</label>
		<input type="url" id="inputUrl" name="inputUrl" required>
		<button type="submit">Update Data</button>
	</form>
	<hr>
	<h2>Updated Data</h2>
	<p>Title: <%= userGeeksData.title || "No data provided" %>
	</p>
	<p>Description: <%= userGeeksData.description || "No data provided" %>
	</p>
	<p>URL: <%= userGeeksData.url || "No data provided" %>
	</p>
</body>

</html>
JavaScript
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({
	extended: true
}));
let data = {
	title: 'GeeksforGeeks',
	description: 'A computer science portal for geeks',
	url: 'https://www.geeksforgeeks.org/',
};
let gfgData = {};
app.get('/', (req, res) => {
	res.render('index', {
		geeksData: data,
		userGeeksData: gfgData
	});
});
app.post('/', (req, res) => {
	gfgData = {
		title: req.body.inputTitle,
		description: req.body.inputDescription,
		url: req.body.inputUrl,
	};
	res.redirect('/');
});

app.listen(port, () => {
	console.log(`Server is running at
	http://localhost:${port}`);
});

To run the application, we need to start the server by using the below command.

node app.js

Output:


Next Article

Similar Reads