Template Rendering via Marko.js in Node.js
Last Updated :
06 Apr, 2023
Marko: Marko makes it easy to represent your UI using a syntax that is like HTML. It is a friendly and super fast UI library that makes building web apps bearable and fun. It is so much like HTML, that you can use it as a replacement for a templating language like handlebars, mustache, or pug.
However, Marko is much more than a templating language. It's a language that allows you to declaratively build an application by describing how the application view changes over time and in response to user actions. In the browser, when the data representing your UI changes, Marko will automatically and efficiently update the DOM to reflect the changes.
Installation: If you're starting from scratch, you can use Marko's cli commands to quickly create a starter app:
npx @marko/create

The Marko compiler runs on Node.js and can be installed using npm:
npm init -y // The -y installs the default package.json

We need to install the following required libraries:
npm install express --save // install express module
npm install marko --save // install marko module
or using yarn:
yarn add marko
Example: Filename: template.marko
html
<!doctype html>
html
head
title -- Hello World
body
h1 -- Hello, ${data.fname} ${data.lname}
h3 -- Welcome to, ${data.host}'s bar.
p -- We offer you
b -- ${data.drinks[0]}, ${data.drinks[1]}, ${data.drinks[2]}.
Equivalent code of Template.marko:
html
<!doctype html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello, ${data.fname} ${data.lname}</h1>
<h3>Welcome to, ${data.host}'s bar.</h3>
<p>
We offer you ${data.drinks[0]},
${data.drinks[1]}, ${data.drinks[2]}.
</p>
</body>
</html>
Filename: index.js
javascript
// Node.js program to implement the
// marko.js template
// Allow Node.js to require and load
// `.marko` files
require("marko/node-require");
// Importing express module
const express = require("express");
// Importing marko module
const markoExpress = require("marko/express");
// Importing template module
const template = require("./template.marko");
const app = express();
// Enable res.marko(template, data)
app.use(markoExpress());
// Routing
app.get("/", function (req, res) {
console.log("Routing done all fine...");
res.marko(template, data = {
fname: "Devanshi",
lname: "awasthi",
host: "Vikas",
drinks: ["Wine", "Beer", "Champagne"]
});
});
// Listening on 2020 port number
app.listen(2020, () => {
console.log("Server started at port: 2020...");
});
Run the index.js file using the following code in cmd:
node index.js
Output (In Console):
Server started at port 2020...
Routing done all fine...Â
In Browser:
Running localhost at port 2020
Note: After Running the server in the console, it automatically creates a file template.marko.js, which has a reference to all the template files.Â
Reference: https://markojs.com/docs/getting-started/
Similar Reads
Render dynamic content in Node using Template Engines In Node.js, the rendering of dynamic content using Templates like EJS, Handlebars, and Pug consists of embedding dynamic data and logic directly into the HTML files. In this article, we will use the EJS Template Engine to render dynamic content in Node.js using Templates. We will explore the practic
4 min read
Node.js Server Side Rendering (SSR) using EJS Server-side rendering (SSR) is a popular technique for rendering a normally client-side-only single-page app (SPA) on the server and then sending a fully rendered page to the client. The client's JavaScript bundle can then take over and the SPA can operate as normal. SSR technique is helpful in situ
3 min read
<%= vs <%- in EJS Template Engine EJS (Embedded JavaScript) is a popular templating engine that helps generate dynamic HTML content using JavaScript. It allows embedding JavaScript logic into HTML, making it a powerful tool for rendering server-side content in Node.js applications.In this article, weâll compare <%= %> and <
4 min read
Server Side Rendering using Express.js And EJS Template Engine Server-side rendering involves generating HTML on the server and sending it to the client, as opposed to generating it on the client side using JavaScript. This improves initial load time, and SEO, and enables dynamic content generation. Express is a popular web application framework for NodeJS, and
3 min read
How to include a template with parameters in EJS ? EJS (Embedded JavaScript) is a templating language that enables dynamic content generation in HTML files using JavaScript syntax. EJS templates consist of HTML code mixed with JavaScript expressions enclosed within <% %> tags. We will discuss the following approaches to include template with p
4 min read