As linguagens de template são ferramentas que facilitam a geração dinâmica de HTML (ou outros tipos de arquivos) combinando código dinâmico com estruturas estáticas. Elas são amplamente usadas em desenvolvimento web backend e frontend, permitindo separar a lógica de programação da apresentação.
Uma linguagem de template utiliza variáveis, loops e condicionais dentro de um arquivo de modelo (template), que depois é processado para gerar o HTML final.
📌 Exemplo de funcionamento básico:
1. O template contém **marcadores dinâmicos** (`{{ }}` ou `{% %}`).
2. Um **motor de template** substitui esses marcadores por valores reais.
3. O resultado final é um **arquivo HTML renderizado** no navegador.
O EJS (Embedded JavaScript Templates) é um motor de templates para Node.js, muito usado com Express.js.
📌 Exemplo de Template EJS (index.ejs)
<!DOCTYPE html>
<html lang="pt">
<head>
<title>Bem-vindo</title>
</head>
<body>
<h1>Olá, <%= nome %>!</h1>
</body>
</html>
📌 Código Node.js para renderizar o template
const express = require('express');
const app = express();
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
res.render('index', { nome: 'Carlos' });
});
app.listen(3000, () => console.log('Servidor rodando em http://localhost:3000'));
🔹 O que acontece?
O <%= nome %> será substituído por "Carlos", gerando a página final.
O Handlebars é outra linguagem de template muito usada, com uma sintaxe mais estruturada.
📌 Exemplo de Template Handlebars (index.hbs)
<h1>Olá, {{nome}}!</h1>
📌 Código Node.js com Express e Handlebars
const express = require('express');
const exphbs = require('express-handlebars');
const app = express();
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
app.get('/', (req, res) => {
res.render('index', { nome: 'Ana' });
});
app.listen(3000, () => console.log('Servidor rodando na porta 3000'));
🔹 O `` será substituído por "Ana".
No Java (Spring Boot), a linguagem de template mais comum é Thymeleaf.
📌 Exemplo de Template Thymeleaf (index.html)
<h1>Olá, <span th:text="${nome}"></span>!</h1>
📌 Código Java com Spring Boot
@Controller
public class HomeController {
@GetMapping("/")
public String home(Model model) {
model.addAttribute("nome", "Mariana");
return "index";
}
}
🔹 O th:text="${nome}" será substituído por "Mariana".
No Python (Flask, Django), a linguagem de template mais usada é Jinja2.
📌 Exemplo de Template Jinja2 (index.html)
<h1>Olá, {{ nome }}!</h1>
📌 Código Python com Flask
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html', nome='Lucas')
if __name__ == '__main__':
app.run(debug=True)
🔹 O `` será substituído por "Lucas".
✔ Separam a lógica do backend da interface do usuário.
✔ Evitam repetição de código com herança de templates.
✔ Facilitam a manutenção e escalabilidade do código.
✔ Podem ser combinadas com frameworks populares como Express, Flask e Spring Boot.