Sus siglas vienen de Embedded Javascript templates.

Instalación

npm i express
npm i ejs

Sintaxis básica (etiquetas):

Ejemplo:

<% if (user) { %>
	<h2><%= user.name %></h2>
<% } %>

Estructura del proyecto:

directorio-proyecto
|--public
|--views
  |--pages
     |--home.ejs
  |--template
     |--head.ejs
     |--footer.ejs 
|--index.js
|--package.json

Configuración

index.js

const express = require('express');
const path = require('path');
const app = express();
const port = 8000;

// configurando la vista para el motor

//1. Definiendo en donde se ubicará el directorio views
app.set('views', path.join(__dirname, 'views')); 
//2. Definiendo el motor que usaremos
app.set('view engine', 'ejs');

//Configurando el directorio publico
app.use(express.static('./public'));

//Renderizando la página home cuando el cliente haga una petición a /
app.get('/',function (req, res) {
	res.render('pages/home')
});

app.listen(port, () => console.log(`Servidor escuchando sobre el puerto ${port}`));