Embedded JavaScript Templates - EJS
Embedded JavaScript Templates (EJS) é uma motor de visualização que facilita a criação de páginas HTML com código JavaScript.
Injetar valores de propriedades
Sintaxe
- Não escapar caracteres (mostrar as tags passadas pelo objeto JavaScript)
<%= [nome da propriedade] %>
- Escapar caracteres (executar as tags passadas pelo objeto JavaScript)
<%- [nome da propriedade] %>
Exemplo
Utilizando <%= ... %>
exports.paginaInicial = (req, res) => {
res.render("index", {
titulo: "Este será o <span style='color: red'>título</span> da página",
});
return;
};
<h1><%= titulo %></h1>
<!--
Na página: Este será o <span style='color: red'>título</span> da página
-->
Utilizando <%- ... %>
exports.paginaInicial = (req, res) => {
res.render("index", {
titulo: "Este será o <span style='color: red'>título</span> da página",
});
return;
};
<h1><%= titulo %></h1>
<!--
Na página: Este será o título da página
|
|
Estará em vermelho
-->
Estrutura condicional
Sintaxe
<% if([condição]) { %>
// código quando a condição for verdadeira
<% } else { %>
// código quando a condição for false
<% } %>
Exemplo
<% if(typeof !== "undefined") { %>
<%= titulo %>
<% } else { %>
O título não foi enviado.
<% } %>
Estrutura de repetição
Sintaxe
<% [array].forEach([arrow function]) %>
Exemplo
<% numeros.forEach(num => { %>
<% num %>
<% }); %>
Importar conteúdos de outras páginas
Sintaxe
<%- include([caminho até a página HTML]) %>
Exemplo
<!-- Arquivo: include/head.ejs -->
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Modelo</title>
</head>
</html>
<% include("include/head) %>
<body>
<section class="container">
<h1>
<% if(typeof !== "undefined") { %>
<%= titulo %>
<% } else { %>
O título não foi enviado.
<% } %>
</h1>
</section>
<script src="./assets/js/bundle.js"></script>
</body>
</html>