Files
expressjs.com/en/advanced/developing-template-engines.md
shubham oulkar edf3ba4285 feat: bottom page navigation component (#2085)
Co-authored-by: Sebastian Beltran <bjohansebas@gmail.com>
2025-11-07 18:02:57 -05:00

1.7 KiB
Executable File

layout, title, description, menu, order, redirect_from
layout title description menu order redirect_from
page Developing template engines for Express Learn how to develop custom template engines for Express.js using app.engine(), with examples on creating and integrating your own template rendering logic. advanced 1 /advanced/developing-template-engines.html

Developing template engines for Express

Use the app.engine(ext, callback) method to create your own template engine. ext refers to the file extension, and callback is the template engine function, which accepts the following items as parameters: the location of the file, the options object, and the callback function.

The following code is an example of implementing a very simple template engine for rendering .ntl files.

const fs = require('fs') // this engine requires the fs module
app.engine('ntl', (filePath, options, callback) => { // define the template engine
  fs.readFile(filePath, (err, content) => {
    if (err) return callback(err)
    // this is an extremely simple template engine
    const rendered = content.toString()
      .replace('#title#', `<title>${options.title}</title>`)
      .replace('#message#', `<h1>${options.message}</h1>`)
    return callback(null, rendered)
  })
})
app.set('views', './views') // specify the views directory
app.set('view engine', 'ntl') // register the template engine

Your app will now be able to render .ntl files. Create a file named index.ntl in the views directory with the following content.

#title#
#message#

Then, create the following route in your app.

app.get('/', (req, res) => {
  res.render('index', { title: 'Hey', message: 'Hello there!' })
})

When you make a request to the home page, index.ntl will be rendered as HTML.