document.createElement('template') is used in JavaScript to create a reusable HTML template dynamically.
✔ The <template> element allows you to define HTML structures that are not immediately rendered in the DOM.
✔ You can clone and insert its content multiple times as needed.
✔ It helps keep the DOM clean and efficient, especially when creating dynamic UI elements.
✅ Basic Usage of document.createElement('template')
const template = document.createElement('template'); // Create a <template> element
template.innerHTML = `
<div class="card">
<h2>Template Title</h2>
<p>This content is inside a template.</p>
</div>
`;
// Clone and insert the template content into the document
document.body.appendChild(template.content.cloneNode(true));
✔ template.innerHTML defines the HTML structure inside the <template>.
✔ template.content.cloneNode(true) clones the content so it can be inserted into the DOM.
✔ The original <template> itself does not appear in the DOM—only its cloned content does.
✅ Key Features of <template>
1️⃣ It does not render immediately.
<template>
<h2>This text won't appear in the DOM</h2>
</template>
- The content inside <template> is not rendered until it is explicitly inserted into the DOM using JavaScript.
2️⃣ You can clone and reuse the template multiple times.
const template = document.querySelector('template');
const clone = template.content.cloneNode(true);
document.body.appendChild(clone);
- This clones the <template> content and adds it to the page.
✅ Example: Creating Multiple List Items Dynamically
const template = document.createElement('template');
template.innerHTML = `
<li class="list-item">Template Item</li>
`;
const ul = document.createElement('ul');
// Generate multiple list items using the template
for (let i = 0; i < 5; i++) {
const item = template.content.cloneNode(true);
item.querySelector('.list-item').textContent = `Item ${i + 1}`;
ul.appendChild(item);
}
document.body.appendChild(ul);
✔ This creates five list items dynamically from a single template.
✔ Using .cloneNode(true), you can duplicate the structure multiple times.
✅ Example: Creating Reusable Card Components
const template = document.createElement('template');
template.innerHTML = `
<div class="card">
<h3 class="card-title"></h3>
<p class="card-content"></p>
</div>
`;
const data = [
{ title: "Card 1", content: "This is the first card." },
{ title: "Card 2", content: "This is the second card." }
];
data.forEach(item => {
const clone = template.content.cloneNode(true);
clone.querySelector('.card-title').textContent = item.title;
clone.querySelector('.card-content').textContent = item.content;
document.body.appendChild(clone);
});
✔ This generates multiple cards dynamically using a template.
✔ More efficient and reusable compared to manually writing each element.
🚀 Comparison: document.createElement('template') vs. Other Methods
Method Description Pros Cons
document.createElement('div') | Creates an element manually | Simple | Hard to manage for large structures |
innerHTML | Inserts HTML as a string | Fast | Potential security risks (XSS) |
document.createElement('template') | Defines reusable HTML structures | Efficient, clean DOM | Not supported in old browsers (IE) |
✅ Final Summary
✔ document.createElement('template') allows you to create reusable UI components.
✔ Use .innerHTML to define the structure and .cloneNode(true) to insert content dynamically.
✔ Ideal for lists, cards, or UI elements that repeat multiple times.
🎯 Using <template> makes your JavaScript code cleaner, more efficient, and easier to maintain! 🚀
'React' 카테고리의 다른 글
useEffect로 라이프사이클 제어하는 법 (0) | 2025.04.15 |
---|---|
React 상태 관리: useRef with useState, let (0) | 2025.04.13 |
React Props (0) | 2025.04.13 |
JSX 기본 문법 (0) | 2025.04.13 |
Virtual DOM과 CRP (0) | 2025.04.12 |