0Pricing
HTML Academy · Lezione

Usare template per il rendering con JavaScript

Combinare i template con i cicli JavaScript per creare elenchi dinamici

Usare template per il rendering con JavaScript è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.

L'elemento template

L'elemento <template> contiene HTML che non viene visualizzato finché non viene clonato e inserito da JavaScript. Il suo contenuto è inerte: gli script non vengono eseguiti, le immagini non vengono caricate e gli stili non vengono applicati finché il template non viene attivato.

Accesso al contenuto del template

Il contenuto del template risiede in un DocumentFragment all'indirizzo template.content. Per usarlo, cloni il fragment: const clone = template.content.cloneNode(true). L'argomento true esegue una clonazione profonda che include tutti i nodi discendenti.

Rendering delle istanze di template

Personalizzi il clone prima di inserirlo: esegua query all'interno del clone, imposti il contenuto testuale e aggiunga i gestori di eventi. Poi lo aggiunga al DOM: container.appendChild(clone). Ogni cloneNode() crea una copia indipendente: può modificare una copia senza influire sulle altre.

const tmpl = document.getElementById("card-template");
function renderCard(data) {
  const clone = tmpl.content.cloneNode(true);
  clone.querySelector(".title").textContent = data.title;
  clone.querySelector(".body").textContent = data.body;
  container.appendChild(clone);
}

Rendering di elenchi da template

Combini i template con Array.forEach o Array.map per eseguire il rendering degli elenchi: per ogni elemento dei dati, cloni il template, inserisca i valori e aggiunga il risultato a un contenitore dell'elenco. Questo pattern è simile a quello dei framework, ma si basa su HTML e JavaScript standard.

Template per le righe di una tabella

Definisca un <template> contenente un <tr> con le celle. Lo cloni e lo completi per ogni riga di dati. In questo modo evita la concatenazione di stringhe per generare HTML: non è necessario eseguire l'escape, poiché imposta textContent invece di innerHTML.

L'attivazione del template è esplicita

I template non vengono mai visualizzati automaticamente. Questo li rende sicuri per memorizzare frammenti da visualizzare in modo condizionale: mostri un template «nessun risultato» solo quando la ricerca non restituisce elementi, un template di errore solo in caso di errore di rete e uno scheletro di caricamento durante il recupero dei dati.

Template annidati

Un template può contenere altri template: i template annidati rimangono inerti all'interno del DocumentFragment del template esterno. Questo consente di creare gerarchie simili a componenti, in cui un template esterno clona e poi attiva i template interni secondo necessità.

Stili con ambito nei template

Gli stili all'interno del tag <style> di un template non vengono applicati al documento: rimangono inerti finché il template non viene istanziato e il suo contenuto non viene spostato nel DOM attivo. Questo consente ai template di contenere i propri stili senza contaminare la pagina.

template vs innerHTML

L'analisi di innerHTML è un'elaborazione sincrona di stringhe HTML: l'HTML viene analizzato nuovamente ogni volta. template.cloneNode() copia un albero già analizzato. Per eseguire ripetutamente il rendering della stessa struttura, la clonazione del template è più veloce e previene i rischi XSS dovuti alla concatenazione di stringhe.

Limiti del data binding

L'elemento template non dispone di data binding integrato: deve eseguire manualmente query e compilare ogni clone. Per esigenze complesse di data binding, è più appropriato usare un framework o una libreria. I template sono pensati per pattern di rendering semplici e manuali, senza il sovraccarico di un framework.

Supporto nei browser

L'elemento template è supportato da tutti i browser moderni (IE11 offriva un supporto parziale). Negli ambienti che richiedono il supporto di IE, aggiunga un polyfill analizzando il contenuto del template durante l'inizializzazione. Nei progetti moderni, usi template senza polyfill.

Verifica delle conoscenze

Perché template.content.cloneNode(true) è preferibile a innerHTML per il rendering ripetuto?

Riepilogo

L'elemento template contiene frammenti HTML inerti e già analizzati. La clonazione di template.content crea istanze indipendenti per il data binding manuale. Insieme all'assegnazione tramite textContent (senza XSS), i template consentono di eseguire il rendering di elenchi, creare interfacce condizionali e riutilizzare pattern HTML usando solo le API standard del browser.

Domande Frequenti

La lezione «Usare template per il rendering con JavaScript» è gratuita?

Sì — il testo completo di «Usare template per il rendering con JavaScript» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.

Cosa imparerò in «Usare template per il rendering con JavaScript»?

Combinare i template con i cicli JavaScript per creare elenchi dinamici Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare HTML Academy?

Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Usare template per il rendering con JavaScript»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione HTML Academy?

Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. L’elemento template: contenuto inattivo
  2. Clonare i template con cloneNode
  3. Usare template per il rendering con JavaScript
  4. Template e sicurezza di innerHTML
← Torna a HTML Academy