Templating Engine for Express

Learn via video courses
Topics Covered

Overview

In Express.js, a templating engine is comparable to a cookbook for a chef. It offers a standardized structure for arranging and displaying HTML and dynamic material, enabling web designers to build various HTML pages by adhering to a set of guidelines outlined in the template. The effectiveness and dependability of a web application depend on the selection of the appropriate templating engine.

Introduction

When it comes to serving up websites from a server, using a static approach can lead to some significant limitations. These can include issues with code duplication and a lack of flexibility, especially when working with databases. Fortunately, Express.js provides a handy solution in the form of its template engine, which allows for dynamic HTML pages to be generated from server-side applications.

One of the key benefits of using template engines is the ability to create reusable components known as partials. These components can be leveraged across multiple files, which helps to avoid the pitfalls of code duplication and allows for a more straightforward implementation of changes

Some of the benefits of using template engines are:

  • Increases a developer's productivity.
  • Makes your program easier to read, use, and maintain.
  • Enhances your application's performance.
  • Increases data processing on the client side.
  • Enables the reuse of templates across many pages.
  • Makes templates from CDNs, or content delivery networks, accessible.

What is a Template Engine?

In essence, a template engine enables us to use static template files with little to no additional code. The template engine changes All variables to their actual values on the client side during execution.

A template engine operates in a surprisingly straightforward manner: you write a template and input variables into it using the proper syntax. You assign values to the variables declared in your template file at the proper route to render the template. These are continuously compiled when the template is rendered.

Integrating Template Engines with Express

It only takes a few lines of code to incorporate a template engine into your Express application. Add the following app settings right after assigning the Express function (but before you create your routes):

1. views: the directory containing the template files

For Example:

This defaults to the views directory in the application's root directory

2. view engine: Your template engine.

For example:

The above code can be used to use the Pug template engine:

Plugjs

There are several ways that PlugJS can handle the scripts and dependencies that provide the page with its dynamic content. The ability of PlugJS to manage modules and dependencies in a flexible and scalable manner, making it simple to add and remove components as needed, is one of its key advantages.

Include the PlugJS library in your code before using PlugJS to manage scripts and dependencies in an Express.js application. Then, they can define and manage modules using the PlugJS API, which can contain both client-side scripts and server-side functionality.

When a page is requested, the server can construct the page's basic HTML structure using a templating engine like Handlebars or Moustache. This HTML may contain placeholders for dynamic content, which PlugJS will load and manage client-side scripts to fill out.

1. Install PlugJS using npm:

2. Require the PlugJS library for your Express.js application:

3. Define a module that contains client-side JavaScript code:

This module has three properties: name, src, and requires. The name identifies the module, src indicates the path to the JavaScript file containing the module code, and requires lists of any dependencies the module needs.

4. Register the module with PlugJS:

This instructs PlugJS to load the myModule module along with any necessary dependencies.

Include a placeholder for the dynamic material that will be produced by the JavaScript code in your HTML template.

This placeholder may be inserted anywhere on the page using HTML.

Use jQuery to add dynamic content to the placeholder in the PlugJS-loaded JavaScript code:

With the content "Hello, world!" this code produces a new HTML paragraph element and appends it to the placeholder with the ID my-content.

Last but not least, mention the PlugJS library in your HTML file and define which modules to load using the data-plugjs attribute:

By doing this, PlugJS is instructed to load the myModule module when the page loads.

EJS

When it comes to opening and closing tags as well as defining characteristics, EJS is far more comparable to HTML than Pug is. Angle brackets and the percent sign are used to declare variables in the format

The Express.js framework is a simple one that doesn't need an application skeleton. Simply create a Node.js application, add express as a dependency, select a package name, and ensure that app.js is the entry point.

let's use a template engine ejs here to simplify development

We can add our app code now that all of the necessary packages have been installed. We'll design a page that figures out the highest prime number that is less than the input a visitor provides.

Copy the following code into the app.js file you just created:

Now let’s add a corresponding view. Create the file views/index.ejs and paste the following ejs-enhanced HTML into it:

You now have a working app that you can start by running node app.js.

Mustache

Express can be combined with Moustache, a template engine, to produce functionality that is comparable to JSP (Java Server Pages). What you truly want is functionality that is straightforward, which is what the templates offer. It's not the ideal separation of concerns to mix too much logic within your display template, as this can complicate your code.

Popular template engine Moustache is renowned for its ease of use and adaptability. It employs a logic-less approach to templating, therefore the templates themselves don't contain any control structures or if/else clauses. Instead, Moustache offers a collection of tags that may be used to add values, iterate through arrays, and integrate other templates.

Here's an example of how to use Mustache in an Express.js application:

1. Install the Mustache library using npm:

2. Require the Mustache library:

3. Create a Mustache template that defines the structure of the HTML output:

Three Moustache tags are used in this template: title, header, and #items. The first two are straightforward placeholders for values that the application will supply, while the third is a section tag that will be used to iterate through an array of objects and add a new list item for each one.

4. Define an object that contains the data to be inserted into the template:

This object includes three properties that correspond to the Mustache tags in the template: {{title}}, {{heading}}, and {{#items}}.

5. Render the template with the data using the mustache.render() method:

This function accepts two arguments: a string representing the Moustache template and a data object containing the values to be added to the template. The fully rendered HTML output is returned as a string.

6. Send the HTML output to the client in the response:

By using Moustache as a templating engine in your Express.js application, you may create dynamic HTML output based on information from your server by following these steps.

Conclusion

  1. Template engines can create reusable components known as partials, which can be leveraged across multiple files for avoiding the pitfalls of code duplication and allows for a more straightforward implementation of changes
  2. A template engine enables us to use static template files with little to no additional code
  3. PlugJS can be used to handle the scripts and dependencies that provide the page its dynamic content
  4. Express can be combined with Moustache, a template engine, to produce functionality that is comparable to JSP (Java Server Pages).