0Pricing
HTML Academy · Lekcja

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

  1. Element template — nieaktywna treść
  2. Klonowanie szablonów za pomocą cloneNode
  3. Używanie template do renderowania za pomocą JavaScript
  4. Szablony a bezpieczeństwo innerHTML
← Powrót do HTML Academy