EJS (Embedded JavaScript) es un motor de plantillas que permite generar HTML dinámico en aplicaciones web, especialmente con Node.js. Facilita la inserción de código JavaScript en archivos HTML para crear contenido dinámico basado en los datos del servidor.
Los Template Engines son herramientas que generan contenido dinámico y personalizado en desarrollo web. Permiten separar el HTML de la lógica del servidor, usando plantillas con variables que se reemplazan con datos antes de mostrar la página al cliente.
En el desarrollo con Express (un framework de Node.js), los template engines gestionan las vistas de manera eficiente. Permiten insertar datos dinámicos del servidor directamente en el HTML, haciendo las vistas más flexibles y personalizadas para el usuario.
Existen varios motores de plantillas populares para usar con Express. Algunos de los más conocidos incluyen:
Cada uno tiene sus propias características, pero todos permiten generar HTML dinámico de manera sencilla.
Un motor de templates genera HTML dinámico combinando plantillas predefinidas con datos del servidor, permitiendo crear páginas web dinámicas sin mezclar lógica de negocio con contenido estático.
const express = require('express');
const app = express();
// Configurar EJS
app.set('view engine', 'ejs');
app.set('views', './views'); proyecto/
├── views/
│ ├── index.ejs
│ └── perfil.ejs
└── server.js // Ruta GET simple
app.get('/', (req, res) => {
res.render('index', {
titulo: 'Página Principal',
usuario: {
nombre: 'Juan',
edad: 30
}
});
});
// Vista EJS (index.ejs)
<h1><%= titulo %></h1>
<p>Nombre: <%= usuario.nombre %></p> // Configuración para parsear body
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
// Ruta POST
app.post('/registro', (req, res) => {
const { nombre, email } = req.body;
// Renderizar vista con datos recibidos
res.render('confirmacion', {
nombre,
email
});
}); // Ruta con parámetros GET
app.get('/usuario', (req, res) => {
// Obtener parámetros de consulta
const id = req.query.id;
const nombre = req.query.nombre;
res.json({ id, nombre });
});
// Ejemplo de URL
// /usuario?id=123&nombre=Juan // Middleware para parsear JSON
app.use(express.json());
// Ruta para manejar solicitudes JSON
app.post('/api/usuarios', (req, res) => {
// Acceder a datos JSON
const { nombre, email, edad } = req.body;
// Procesar datos
const nuevoUsuario = {
id: Date.now(),
nombre,
email,
edad
};
res.status(201).json(nuevoUsuario);
}); const express = require('express');
const app = express();
// Configuraciones
app.set('view engine', 'ejs');
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Ruta principal
app.get('/', (req, res) => {
res.render('index', {
titulo: 'Bienvenido',
usuarios: [
{ id: 1, nombre: 'Ana' },
{ id: 2, nombre: 'Carlos' }
]
});
});
// Ruta de registro
app.post('/registro', (req, res) => {
const { nombre, email } = req.body;
res.render('confirmacion', { nombre, email });
});
// Iniciar servidor
app.listen(3000, () => {
console.log('Servidor corriendo');
}); Para comprender cómo implementar el motor de plantillas EJS, te comparto un ejemplo completo en GitHub donde puedes ver el código y la estructura del proyecto.
Además, puedes ver una guía paso a paso en este video de YouTube para entender cómo funciona la implementación.