Cómo usar EJS para crear plantillas para su aplicación Node
Introducción
Al crear rápidamente aplicaciones Node, a veces es necesario contar con una forma rápida de crear una plantilla para su aplicación.
Jade viene como el motor de plantillas predeterminado para Express, pero la sintaxis de Jade puede ser demasiado compleja para muchos casos de uso.
Las plantillas JavaScript integradas (EJS) se pueden utilizar como un motor de plantillas alternativo.
En este artículo, aprenderá cómo aplicar EJS a una aplicación Express, incluir partes repetibles de su sitio y pasar datos a las vistas.
Implemente sus aplicaciones frontend desde GitHub con la plataforma de aplicaciones DigitalOcean . Deje que DigitalOcean se concentre en escalar su aplicación.
Prerrequisitos
Si deseas seguir este artículo, necesitarás:
- Un entorno de desarrollo local para Node.js. Sigue Cómo instalar Node.js y crear un entorno de desarrollo local .
Nota: Puede encontrar un repositorio git del código de demostración completo en GitHub .
Este tutorial se escribió originalmente para express
las versiones v4.17.1 y ejs
v3.1.5. Se verificó con Node v16.0.0, npm
v7.11.1, express
v4.17.1 y ejs
v3.1.6.
Paso 1: Configuración del proyecto
Primero, abra su ventana de terminal y cree un nuevo directorio de proyecto:
- mkdir ejs-demo
Luego, navegue hasta el directorio recién creado:
- cd ejs-demo
En este punto, puedes inicializar un nuevo proyecto npm:
- npm init -y
A continuación, deberá instalar el express
paquete:
- npm install express@4.17.1
Luego instala el ejs
paquete:
- npm install ejs@3.1.6
En este punto, tienes un nuevo proyecto listo para usar Express y EJS.
Paso 1: Configuración conserver.js
Con todas las dependencias instaladas, configuremos la aplicación para usar EJS y configuremos las rutas para la página de índice y la página Acerca de.
Crea un nuevo server.js
archivo y ábrelo con tu editor de código y agrega las siguientes líneas de código:
servidor.js
var express = require('express');var app = express();// set the view engine to ejsapp.set('view engine', 'ejs');// use res.render to load up an ejs view file// index pageapp.get('/', function(req, res) { res.render('pages/index');});// about pageapp.get('/about', function(req, res) { res.render('pages/about');});app.listen(8080);console.log('Server is listening on port 8080');
Este código define la aplicación y escucha en el puerto 8080
.
Este código también establece EJS como el motor de visualización para la aplicación Express usando:
`app.set('view engine', 'ejs');`
Observa cómo el código envía una vista al usuario mediante res.render()
. Es importante tener en cuenta que res.render()
buscará views
la vista en una carpeta. Por lo tanto, solo tienes que definirla, pages/index
ya que la ruta completa es views/pages/index
.
A continuación, creará las vistas utilizando EJS.
Paso 2: creación de los parciales de EJS
Al igual que muchas de las aplicaciones que creas, habrá una gran cantidad de código que se reutilizará. Estos se consideran archivos parciales . En este ejemplo, habrá tres archivos parciales que se reutilizarán en la página de índice y la página Acerca de: head.ejs
, header.ejs
y footer.ejs
. Ahora, creemos esos archivos.
Crear un nuevo views
directorio:
- mkdir views
Luego, crea un nuevo partials
subdirectorio:
- mkdir views/partials
En este directorio, crea un nuevo head.ejs
archivo y ábrelo con tu editor de código. Agrega las siguientes líneas de código:
vistas/parciales/head.ejs
meta charset="UTF-8"titleEJS Is Fun/title!-- CSS (load bootstrap from a CDN) --link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.min.css"style body { padding-top:50px; }/style
Este código contiene metadatos para head
un documento HTML. También incluye estilos Bootstrap .
A continuación, crea un nuevo header.ejs
archivo y ábrelo con el editor de código. Agrega las siguientes líneas de código:
vistas/parciales/encabezado.ejs
nav a href="/"EJS Is Fun/a ul li a href="/"Home/a /li li a href="/about"About/a /li /ul/nav
Este código contiene la navegación para un documento HTML y utiliza varias clases de Bootstrap para el estilo.
A continuación, crea un nuevo footer.ejs
archivo y ábrelo con el editor de código. Agrega las siguientes líneas de código:
vistas/parciales/pie de página.ejs
pcopy; Copyright 2020 The Awesome People/p
Este código contiene información de derechos de autor y utiliza varias clases de Bootstrap para el estilo.
A continuación, utilizarás estos parciales en index..ejs
y about.ejs
.
Paso 3: agregar los parciales de EJS a las vistas
Tienes tres parciales definidos. Ahora puedes include
incluirlos en tus vistas.
Úselo para incrustar una parte de EJS en otro archivo.%- include('RELATIVE/PATH/TO/FILE') %
- El guión
%-
en lugar de simplemente%
indicarle a EJS que represente HTML sin formato. - La ruta al parcial es relativa al archivo actual.
Luego, crea un nuevo pages
subdirectorio:
- mkdir views/pages
En este directorio, crea un nuevo index.ejs
archivo y ábrelo con tu editor de código. Agrega las siguientes líneas de código:
vistas/paginas/index.ejs
!DOCTYPE htmlhtmlhead %- include('../partials/head'); %/headbodyheader %- include('../partials/header'); %/headermain div h1This is great/h1 pWelcome to templating using EJS/p /div/mainfooter %- include('../partials/footer'); %/footer/body/html
Guarde los cambios en este archivo y luego ejecute la aplicación:
- node server.js
Si visita http://localhost:8080/
mediante un navegador web, podrá observar la página de índice:
A continuación, crea un nuevo about.ejs
archivo y ábrelo con el editor de código. Agrega las siguientes líneas de código:
vistas/paginas/acerca de.ejs
!DOCTYPE htmlhtmlhead %- include('../partials/head'); %/headbodyheader %- include('../partials/header'); %/headermaindiv div div h1This is great/h1 pWelcome to templating using EJS/p /div /div div div h3Look I'm A Sidebar!/h3 /div /div/div/mainfooter %- include('../partials/footer'); %/footer/body/html
Este código agrega una barra lateral de Bootstrap para demostrar cómo se pueden estructurar los parciales para reutilizarlos en diferentes plantillas y páginas.
Guarde los cambios en este archivo y luego ejecute la aplicación:
- node server.js
Si visita http://localhost:8080/about
desde un navegador web, podrá observar la página Acerca de con una barra lateral:
Ahora puede comenzar a usar EJS para pasar datos desde la aplicación Node a las vistas.
Paso 4: Pasar datos a vistas y parciales
Definamos algunas variables básicas y una lista para pasar a la página de Índice.
Vuelva server.js
a visitar su editor de código y agregue las siguientes líneas de código dentro de la app.get('/')
ruta:
servidor.js
var express = require('express');var app = express();// set the view engine to ejsapp.set('view engine', 'ejs');// use res.render to load up an ejs view file// index pageapp.get('/', function(req, res) { var mascots = [ { name: 'Sammy', organization: "DigitalOcean", birth_year: 2012}, { name: 'Tux', organization: "Linux", birth_year: 1996}, { name: 'Moby Dock', organization: "Docker", birth_year: 2013} ]; var tagline = "No programming concept is complete without a cute animal mascot."; res.render('pages/index', { mascots: mascots, tagline: tagline });});// about pageapp.get('/about', function(req, res) { res.render('pages/about');});app.listen(8080);console.log('Server is listening on port 8080');
Este código define una matriz llamada mascots
y una cadena llamada tagline
. A continuación, vamos a utilizarlas en index.ejs
.
Representación de una única variable en EJS
Para hacer eco de una sola variable, puedes utilizar %= tagline %
.
Vuelva index.ejs
a visitar su editor de código y agregue las siguientes líneas de código:
vistas/paginas/index.ejs
!DOCTYPE htmlhtmlhead %- include('../partials/head'); %/headbodyheader %- include('../partials/header'); %/headermain div h1This is great/h1 pWelcome to templating using EJS/p h2Variable/h2 p%= tagline %/p /div/mainfooter %- include('../partials/footer'); %/footer/body/html
Este código mostrará el tagline
valor en la página de índice.
Recorrer datos en bucle en EJS
Para recorrer los datos en bucle, puedes utilizar .forEach
.
Vuelva index.ejs
a visitar su editor de código y agregue las siguientes líneas de código:
vistas/paginas/index.ejs
!DOCTYPE htmlhtmlhead %- include('../partials/head'); %/headbodyheader %- include('../partials/header'); %/headermain div h1This is great/h1 pWelcome to templating using EJS/p h2Variable/h2 p%= tagline %/p ul % mascots.forEach(function(mascot) { % li strong%= mascot.name %/strong representing %= mascot.organization %, born %= mascot.birth_year % /li % }); % /ul /div/mainfooter %- include('../partials/footer'); %/footer/body/html
Guarde los cambios en este archivo y luego ejecute la aplicación:
- node server.js
Si visita http://localhost:8080/
desde un navegador web, podrá observar la página de índice con mascots
:
Pasar datos a un parcial en EJS
El parcial de EJS tiene acceso a los mismos datos que la vista principal. Pero tenga cuidado. Si hace referencia a una variable en un parcial, debe definirse en cada vista que use el parcial o se generará un error.
También puedes definir y pasar variables a un parcial EJS en la sintaxis de inclusión de esta manera:
vistas/paginas/acerca de.ejs
...header %- include('../partials/header', {variant: 'compact'}); %/header...
Pero nuevamente hay que tener cuidado al asumir que se ha definido una variable.
Si desea hacer referencia a una variable en un parcial que no siempre puede estar definido y darle un valor predeterminado, puede hacerlo de la siguiente manera:
vistas/parciales/encabezado.ejs
...emVariant: %= typeof variant != 'undefined' ? variant : 'default' %/em...
En la línea anterior, el código EJS representa el valor variant
si está definido y default
si no.
Conclusión
En este artículo, aprendió cómo aplicar EJS a una aplicación Express, incluir partes repetibles de su sitio y pasar datos a las vistas.
EJS le permite crear aplicaciones cuando no necesita una complejidad adicional. Al usar elementos parciales y tener la capacidad de pasar variables fácilmente a sus vistas, puede crear rápidamente algunas aplicaciones excelentes.
Consulta la documentación de EJS para obtener información adicional sobre las características y la sintaxis. Consulta Comparación de motores de plantillas de JavaScript: Jade, Mustache, Dust y más para comprender las ventajas y desventajas de los diferentes motores de visualización.
Deja una respuesta