HTML5 template tag

김영윤·2023년 9월 18일

MDN 문서

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template

chat-GPT

HTML5 template tag에 대해 설명해줘

HTML5의 <template> 태그는 클라이언트 측 템플릿을 정의하고, 이를 스크립트로 인스턴스화하여 동적으로 콘텐츠를 생성하는 데 사용됩니다. 이것은 웹 개발에서 특히 중요한 기능 중 하나로, 미리 정의된 템플릿을 사용하여 동적 콘텐츠를 생성하거나 변경할 수 있습니다.

<template> 태그의 주요 특징과 사용법은 다음과 같습니다:

  1. 정의만, 렌더링은 하지 않음: <template> 태그 내부의 콘텐츠는 페이지가 로드될 때 렌더링되지 않습니다. 대신, 이 콘텐츠는 브라우저에 의해 파싱되고 메모리에 저장됩니다.

  2. 스크립트로 인스턴스화: JavaScript를 사용하여 <template> 내의 콘텐츠를 복제하고 동적으로 삽입할 수 있습니다. 이를 통해 동적 UI 업데이트 및 컴포넌트 재사용이 가능해집니다.

  3. 브라우저 호환성: <template> 태그는 대부분의 최신 브라우저에서 지원됩니다. 레거시 브라우저에 대한 폴백을 구현해야 할 수도 있습니다.

예를 들어, 다음은 <template> 태그의 간단한 사용 예제입니다:

<!DOCTYPE html>
<html>
<head>
    <title>Template Example</title>
</head>
<body>
    <!-- 템플릿 정의 -->
    <template id="myTemplate">
        <h1>Hello, <span id="name"></span>!</h1>
    </template>

    <!-- 템플릿 인스턴스화 및 콘텐츠 삽입 -->
    <script>
        // 템플릿 요소 가져오기
        var template = document.getElementById("myTemplate");

        // 템플릿 내의 요소를 복제하고 콘텐츠 설정
        var instance = document.importNode(template.content, true);
        instance.querySelector("#name").textContent = "John";

        // 콘텐츠를 문서에 삽입
        document.body.appendChild(instance);
    </script>
</body>
</html>

이 예제에서는 <template> 태그를 사용하여 템플릿을 정의하고, JavaScript를 사용하여 템플릿을 인스턴스화하고 문서에 추가된 결과를 볼 수 있습니다. 이러한 방식으로 동적으로 콘텐츠를 생성하고 활용할 수 있습니다.

var instance = document.importNode(template.content, true);

document.importNode() 함수는 DOM 요소를 복제하고 복제된 노드를 반환하는 JavaScript 함수입니다. 위의 예제에서 var instance = document.importNode(template.content, true); 코드 줄을 자세히 설명하겠습니다.

  1. document: document는 현재 웹 페이지의 DOM(Document Object Model)에 접근하는 JavaScript의 전역 객체입니다. DOM은 HTML 문서의 구조와 콘텐츠를 표현하는 객체 모델로, 웹 페이지의 요소에 대한 조작 및 조작을 가능하게 합니다.

  2. importNode(): document 객체의 메서드 중 하나로, DOM 노드를 복제하고 새로운 노드를 생성하는 데 사용됩니다.

  3. template.content: 이 코드에서 template<template> 요소를 나타내며, content 속성은 해당 템플릿의 내용을 나타냅니다. <template> 태그 내의 모든 자식 요소와 텍스트는 content 속성에 포함됩니다.

  4. true: importNode() 함수의 두 번째 매개변수는 deep라고 불리며, 복제 프로세스의 깊이를 나타냅니다. true를 전달하면, 템플릿의 내용 및 하위 요소들이 모두 복제됩니다. 이것은 템플릿의 모든 자식 요소와 그 내용까지 복제하려는 경우에 유용합니다.

따라서 var instance = document.importNode(template.content, true); 코드는 다음을 수행합니다:

  • template 요소의 내용과 하위 요소들을 모두 복제합니다.
  • 이 복제된 내용을 instance 변수에 저장합니다.

결과적으로, instance 변수에는 템플릿 내용의 복제본이 들어 있으며, 이 복제본은 원본 템플릿을 변경하지 않습니다. 이제 instance를 조작하거나 문서에 추가함으로써 동적으로 웹 페이지의 콘텐츠를 생성하고 변경할 수 있습니다.

profile
안녕하세요!

0개의 댓글