Używanie template do renderowania za pomocą JavaScript
Łączenie szablonów z pętlami JavaScript w celu tworzenia dynamicznych list
Używanie template do renderowania za pomocą JavaScript to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.
Element template
Element <template> przechowuje kod HTML, który nie jest renderowany, dopóki JavaScript go nie sklonuje i nie wstawi. Jego zawartość jest nieaktywna — skrypty nie są wykonywane, obrazy nie są ładowane, a style nie są stosowane — dopóki szablon nie zostanie aktywowany.
Dostęp do zawartości szablonu
Zawartość szablonu znajduje się w obiekcie DocumentFragment dostępnym przez template.content. Aby jej użyć, sklonuj fragment: const clone = template.content.cloneNode(true). Argument true wykonuje głębokie klonowanie obejmujące wszystkie węzły potomne.
Renderowanie instancji szablonu
Dostosuj klon przed wstawieniem: wyszukaj elementy wewnątrz klonu, ustaw zawartość tekstową i dodaj nasłuchiwacze zdarzeń. Następnie dodaj klon do DOM: container.appendChild(clone). Każde wywołanie cloneNode() tworzy niezależną kopię — można ją modyfikować bez wpływu na pozostałe kopie.
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);
}Renderowanie list z szablonów
Połącz szablony z Array.forEach lub Array.map, aby renderować listy: dla każdego elementu danych sklonuj szablon, uzupełnij wartości i dodaj element do kontenera listy. Ten wzorzec przypomina rozwiązania frameworkowe, ale opiera się na standardowym HTML i JavaScript.
Szablon dla wierszy tabeli
Zdefiniuj element <template> zawierający element <tr> z komórkami. Sklonuj go i uzupełnij dla każdego wiersza danych. Pozwala to uniknąć konkatenacji ciągów podczas generowania HTML — nie jest potrzebne kodowanie znaków, ponieważ ustawiasz textContent, a nie innerHTML.
Aktywacja szablonu jest jawna
Szablony nigdy nie są renderowane automatycznie. Dzięki temu można bezpiecznie przechowywać fragmenty renderowane warunkowo: wyświetlać szablon „brak wyników” tylko wtedy, gdy wyszukiwanie nie zwróci wyników, szablon błędu tylko w przypadku niepowodzenia żądania sieciowego oraz szkielet interfejsu podczas pobierania danych.
Zagnieżdżone szablony
Szablon może zawierać inne szablony — zagnieżdżone szablony pozostają nieaktywne wewnątrz obiektu DocumentFragment zewnętrznego szablonu. Umożliwia to tworzenie hierarchii przypominających komponenty, w których zewnętrzny szablon klonuje, a następnie w razie potrzeby aktywuje wewnętrzne szablony.
Style o ograniczonym zakresie w szablonach
Style wewnątrz znacznika <style> szablonu nie są stosowane do dokumentu — pozostają nieaktywne, dopóki szablon nie zostanie utworzony, a jego zawartość przeniesiona do aktywnego DOM. Dzięki temu szablony mogą zawierać własne style bez zanieczyszczania strony.
template a innerHTML
Analizowanie innerHTML to synchroniczne przetwarzanie ciągu HTML — HTML jest analizowany ponownie przy każdym użyciu. template.cloneNode() kopiuje drzewo, które zostało już przeanalizowane. W przypadku wielokrotnego renderowania tej samej struktury klonowanie szablonu jest szybsze i eliminuje zagrożenia XSS wynikające z konkatenacji ciągów.
Ograniczenia wiązania danych
Element template nie ma wbudowanego mechanizmu wiązania danych — każdy klon trzeba ręcznie wyszukać i uzupełnić. W przypadku złożonych potrzeb związanych z wiązaniem danych lepszym rozwiązaniem będzie framework lub biblioteka. Szablony służą do prostego, ręcznego renderowania bez narzutu frameworka.
Obsługa przeglądarek
Element template jest obsługiwany we wszystkich nowoczesnych przeglądarkach (IE11 oferował częściową obsługę). W środowiskach wymagających obsługi IE należy zastosować polyfill, analizując zawartość szablonu podczas inicjalizacji. W nowoczesnych projektach można używać template bez polyfill.
Sprawdzenie wiedzy
Dlaczego template.content.cloneNode(true) jest preferowane zamiast innerHTML podczas wielokrotnego renderowania?
Podsumowanie
Element template przechowuje nieaktywne, wcześniej przeanalizowane fragmenty HTML. Klonowanie template.content tworzy niezależne instancje na potrzeby ręcznego wiązania danych. W połączeniu z przypisywaniem wartości do textContent (bez XSS) szablony umożliwiają renderowanie list przypominające rozwiązania frameworkowe, warunkowe tworzenie interfejsu i wielokrotne używanie wzorców HTML wyłącznie za pomocą standardowych API przeglądarki.
Często zadawane pytania
Czy lekcja „Używanie template do renderowania za pomocą JavaScript” jest bezpłatna?
Tak — pełny tekst „Używanie template do renderowania za pomocą JavaScript” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Używanie template do renderowania za pomocą JavaScript”?
Łączenie szablonów z pętlami JavaScript w celu tworzenia dynamicznych list Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć HTML Academy?
Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Używanie template do renderowania za pomocą JavaScript”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?
Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Element template — nieaktywna treść
- Klonowanie szablonów za pomocą cloneNode
- Używanie template do renderowania za pomocą JavaScript
- Szablony a bezpieczeństwo innerHTML