React

document.createElement('template')

neal89 2025. 2. 18. 06:20

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