Guia Completo de Templates Dinâmicos com JavaScript Puro

Quando desenvolvemos aplicações web mais complexas, seja para exibir listasListas Ordenadas e Não Ordenadas: `<ul>`, `<ol>`, `<li>`Listas Ordenadas e Não Ordenadas: `<ul>`, `<ol>`, `<li>`Aprenda a criar listas ordenadas e não ordenadas em HTML. Descubra exemplos práticos e boas práticas para organizar conteúdos e facilitar a compreensão. de produtos, criar seções personalizadas ou gerar conteúdo baseado em dados do usuário, templates dinâmicos tornam-se uma ferramenta essencial. Esses templates nos permitem separar a estrutura visual do nosso código JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., favorecendo a organização, a reutilização e a clareza na construção de interfaces.

Neste tutorial, vamos explorar como lidar com templates dinâmicos usando JavaScript puroAnimações e Efeitos com JavaScript PuroAnimações e Efeitos com JavaScript PuroAprenda a criar animações e efeitos visuais usando JavaScript puro. Descubra técnicas que combinam performance e criatividade para interações web surpreendentes, aproveitando recursos do navegador e boas práticas de desenvolvimento. A ideia é mostrar, de forma narrativa, como o uso de templates pode acelerar e simplificar o desenvolvimento de elementos HTMLTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. dinâmicos, sem precisar recorrer a bibliotecas externas.

O que são Templates Dinâmicos?🔗

Os templates dinâmicos são blocos de marcação (por exemplo, HTML) que servem como modelo para a criação de elementos repetitivos ou com conteúdo variável na página. Em outras palavras, em vez de criarmos todo o HTML “na mão” com código JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente. repetitivo, podemos deixar um “molde” pronto, apenas substituindo as partes que mudam conforme as informações recebem valores.

Principais vantagens de usar templates dinâmicos:

Como Estruturar um Template🔗

Uma das formas mais simples de criar um template dinâmico em HTMLO que é HTML? Fundamentos, História e Evolução da LinguagemO que é HTML? Fundamentos, História e Evolução da LinguagemDescubra a origem e evolução do HTML, entendendo sua importância na estrutura da web e como influenciou o desenvolvimento digital moderno./JS é usando a tag <template>. Essa tagTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. permite definir o conteúdo, mas ele não é renderizado imediatamente na página. Veja um exemplo:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Exemplo de Template</title>
</head>
<body>
  <template id="meu-template">
    <div class="item">
      <h2 class="titulo"></h2>
      <p class="descricao"></p>
    </div>
  </template>
  <div id="container"></div>
  <script src="app.js"></script>
</body>
</html>

Nesse código, criamos um <template> com o idAtributos HTML: `id`, `class`, `style`, `data-*`Atributos HTML: `id`, `class`, `style`, `data-*`Aprenda a aplicar atributos id, class, style e data-* no HTML para organizar, estilizar e dinamizar sua página com praticidade e eficiência.="meu-template". Dentro dele, temos uma estrutura básica contendo elementosTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. de texto (h2, p) que, mais tarde, iremos preencher dinamicamente.

Como utilizar o template via JavaScript

No arquivo app.js, podemos capturar e clonar o conteúdo do template para criar vários itens, modificando o conteúdo de cada cópia conforme necessário:

// Selecionamos o template e o container
const template = document.querySelector('#meu-template');
const container = document.querySelector('#container');
// Vamos imaginar uma lista de dados:
const listaDeItens = [
  { titulo: 'Item 1', descricao: 'Descrição do primeiro item' },
  { titulo: 'Item 2', descricao: 'Descrição do segundo item' },
  { titulo: 'Item 3', descricao: 'Descrição do terceiro item' }
];
// Percorremos a lista para criar cada item na tela:
listaDeItens.forEach(item => {
  // Clonamos o conteúdo do template
  const clone = document.importNode(template.content, true);
  // Atribuímos os valores dinamicamente
  clone.querySelector('.titulo').textContent = item.titulo;
  clone.querySelector('.descricao').textContent = item.descricao;
  // Inserimos o clone no container
  container.appendChild(clone);
});

Observe que usamos document.importNode(template.content, true) para criar uma cópia do conteúdo do template, permitindo que cada loop gere uma nova estrutura HTMLO que é HTML? Fundamentos, História e Evolução da LinguagemO que é HTML? Fundamentos, História e Evolução da LinguagemDescubra a origem e evolução do HTML, entendendo sua importância na estrutura da web e como influenciou o desenvolvimento digital moderno. independente.

Template Literals para Construção de Strings🔗

Além de usar a tagTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis. <template>, outra abordagem para gerar trechos de HTMLO que é HTML? Fundamentos, História e Evolução da LinguagemO que é HTML? Fundamentos, História e Evolução da LinguagemDescubra a origem e evolução do HTML, entendendo sua importância na estrutura da web e como influenciou o desenvolvimento digital moderno. dinâmicos é usar template literals do ES6+. Essa funcionalidade permite criar strings de várias linhas, incorporando variáveisPré-processadores (SASS/SCSS): Variáveis, Mixins, NestingPré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. de forma expressiva. É útil, principalmente quando não queremos (ou não podemos) utilizar a tag <template>.

Por exemplo:

function criarItem(titulo, descricao) {
  return `
    <div class="item">
      <h2 class="titulo">${titulo}</h2>
      <p class="descricao">${descricao}</p>
    </div>
  `;
}
const container = document.querySelector('#container');
const listaDeItens = [
  { titulo: 'Item A', descricao: 'Conteúdo do A' },
  { titulo: 'Item B', descricao: 'Conteúdo do B' }
];
listaDeItens.forEach(item => {
  // Usamos o template literal para construir o HTML
  const htmlItem = criarItem(item.titulo, item.descricao);
  // Em seguida, adicionamos ao container
  container.innerHTML += htmlItem;
});

Por que usar template literals?

1. Ganho de legibilidade em relação ao uso de strings concatenadas.

2. Possibilidade de interpolar variáveisPré-processadores (SASS/SCSS): Variáveis, Mixins, NestingPré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. de forma mais intuitiva (${variavel}).

Contudo, é importante!important e Boas Práticas!important e Boas PráticasDescubra como o !important afeta a cascata do CSS e aprenda boas práticas para evitar conflitos, facilitando a manutenção e depuração do código. ficar atento: inserir HTML usando innerHTML pode demandar cuidados com segurança para evitar a inserção de conteúdo malicioso (caso o texto venha de fontesTrabalhando com Fontes, Cores e FundosTrabalhando com Fontes, Cores e FundosDescubra neste tutorial completo como aplicar corretamente fontes, cores e fundos em sua página web, garantindo um design moderno e funcional. externas). Isso já é um passo além do que estamos cobrindo agora, mas é bom manter em mente.

Controlando Estados de Templates🔗

Quando trabalhamos com várias partes da aplicação que precisam ser geradas dinamicamente, é comum termos várias estruturas. É interessante separá-las em diversos arquivos ou manter múltiplos <template> no HTMLO que é HTML? Fundamentos, História e Evolução da LinguagemO que é HTML? Fundamentos, História e Evolução da LinguagemDescubra a origem e evolução do HTML, entendendo sua importância na estrutura da web e como influenciou o desenvolvimento digital moderno., cada qual com seu propósito. Por exemplo:

<template id="card-produto">
  <div class="card">
    <h4 class="nome-produto"></h4>
    <p class="preco-produto"></p>
    <button class="btn-comprar">Comprar</button>
  </div>
</template>
<template id="card-usuario">
  <div class="card-usuario">
    <h4 class="nome-usuario"></h4>
    <p class="email-usuario"></p>
  </div>
</template>

No JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., basta selecionar o template correto antes de clonar seu conteúdo:

const templateProduto = document.querySelector('#card-produto');
const templateUsuario = document.querySelector('#card-usuario');
// Exemplo de uso:
function criarCardProduto(produto) {
  const clone = document.importNode(templateProduto.content, true);
  clone.querySelector('.nome-produto').textContent = produto.nome;
  clone.querySelector('.preco-produto').textContent = `R$ ${produto.preco}`;
  return clone;
}
function criarCardUsuario(usuario) {
  const clone = document.importNode(templateUsuario.content, true);
  clone.querySelector('.nome-usuario').textContent = usuario.nome;
  clone.querySelector('.email-usuario').textContent = usuario.email;
  return clone;
}

Boas Práticas e Cuidados🔗

Exemplo Prático Rápido🔗

Como exercício rápido, podemos criar uma pequena tabelaCriando Tabelas: `<table>`, `<tr>`, `<td>`, `<th>`Criando Tabelas: `<table>`, `<tr>`, `<td>`, `<th>`Descubra como montar tabelas HTML com tags básicas. Este tutorial prático ensina o uso de <table> <tr> <td> e <th> para organizar dados de forma eficiente. de usuários de forma dinâmica:

<template id="template-linha">
  <tr>
    <td class="nome"></td>
    <td class="idade"></td>
  </tr>
</template>
<table>
  <thead>
    <tr>
      <th>Nome</th>
      <th>Idade</th>
    </tr>
  </thead>
  <tbody id="corpo-tabela"></tbody>
</table>

E no JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente.:

const dados = [
  { nome: 'Maria', idade: 28 },
  { nome: 'João', idade: 34 },
  { nome: 'Carlos', idade: 22 }
];
const templateLinha = document.querySelector('#template-linha');
const corpoTabela = document.querySelector('#corpo-tabela');
dados.forEach(item => {
  const clone = document.importNode(templateLinha.content, true);
  clone.querySelector('.nome').textContent = item.nome;
  clone.querySelector('.idade').textContent = item.idade;
  corpoTabela.appendChild(clone);
});

Resultado: uma tabela gerada totalmente a partir de dados do JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., mantendo a estrutura definida pelo template.

Conclusão🔗

Criar e gerenciar templates dinâmicos com JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente. é um passo fundamental para desenvolver interfaces mais organizadas e escaláveis no navegador. A separação entre a lógica de apresentação e a estrutura de exibiçãoSeletores e Propriedades CSS EssenciaisSeletores e Propriedades CSS EssenciaisAprenda a dominar o CSS com nosso tutorial completo: entenda seletores, propriedades essenciais e técnicas para criar layouts modernos e atrativos. faz toda a diferença para projetos em crescimento, onde a reutilização e a clareza de código são prioridades.

Ao dominar essa técnica, você estará mais preparado para lidar com partes do código que exigem múltiplas inserções de elementosTags e Elementos: Sintaxe e HierarquiaTags e Elementos: Sintaxe e HierarquiaDescubra os fundamentos do HTML: aprenda sobre tags, elementos, hierarquia e boas práticas para criar páginas bem estruturadas e acessíveis., exibindo dados de forma dinâmica sem perda de eficiência. Isso não apenas deixa o projeto mais manter e entender, mas também aproxima bastante a experiência de desenvolvimento às práticas profissionais encontradas em bibliotecas e frameworks mais avançados.

Sinta-se à vontade para explorar essas ideias em projetos pessoais ou profissionais, criando templates específicos para cada tipo de conteúdo e aperfeiçoando a forma de construir aplicações JavaScriptIntrodução ao JavaScript e Configuração do AmbienteIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente. mais robustas!

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados