프라이D
프라이Develog(❁´◡`❁)
프라이D
전체 방문자
오늘
어제
  • ALL (378)
    • TDD, Cleancode with JavaScr.. (5)
    • 프로젝트 (32)
      • work (3)
      • 직접 만드는 기술 블로그 (2)
      • 데일리 옥션 (19)
      • 모락모락 (8)
    • Computer Science (1)
    • Algorithm & 자료구조 (94)
      • 알고리즘 w.JavaScript (53)
      • 자료구조 (5)
      • (인프런) 자바스크립트 알고리즘 문제풀이 (34)
    • JavaScript (45)
      • JavaScript (41)
      • 모던 자바스크립트 Deep Dive (4)
    • WEB (13)
    • 회고 (12)
    • TIL (109)
    • WIL (7)
    • Stacks (20)
      • React.js (6)
      • Next.js (1)
      • Redux (3)
      • Node.js (2)
      • GIT (2)
      • SAP (1)
    • 15일 메이킹 프로젝트 (15)
    • 이전 기록 (14)
    • ETC. (5)
    • ---------------2021 (6)
      • 내일배움단-웹개발 5주 (2)
      • 정보처리기사 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • 국비지원
  • 스파르타코딩클럽
  • 코드스테이츠
  • 자바스크립트알고리즘
  • 내일배움카드
  • 내일배움단
  • vanilaJS
  • nomadcoders
  • 자바스크립트
  • 비트마스크
  • JavaScript
  • 2023 인프콘 후기
  • MySQL
  • Til
  • 모던자바스크립트딥다이브
  • 자바스크립트비트마스크
  • 코딩프로젝트
  • nomadcoder
  • 투포인터알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
프라이D

프라이Develog(❁´◡`❁)

JavaScript/JavaScript

[JavaScript]DocumentFragment 와 HTML5 template 태그 사용

2022. 7. 14. 20:53

Document.createDocumentFragment()

  • 가짜 documement를 생성하는 메서드. fragmentDocument에서 요소 추가에 필요한 모든 작업을 진행한 뒤, 1회의 작업으로 실제 document에 추가하도록 할 수 있다.
  • document 의 태그를 계속 편집하는게 성능 측면에서 좋지 않은데, 이렇게 임시 document 에 작업한 뒤 실제 document에 추가하면 실제로는 마지막 1회만 document를 직접 조작하는 셈이 된다. (리플로우-페이지를 계속 렌더링 하는 것을 줄일 수 있다고 한다.)
// fragmentDocument (가짜 document 생성)
const fragment = document.createDocumentFragment();

// 새로운 element 생성
const newDiv = document.createElement('div');
const text = document.createTextNode('텍스트 생성!');

// 새 element 에 appendChild, 이를 fragment에 append한다.
newDiv.appendChild(text);
fragment.appendChild(newDiv);

// 완성된 fragmentDocument를 실제 document에 append
body.appendChild(fragment);

HTML5 template 태그

  • 말 그대로 html 템플릿을 미리 만들어 두고, 필요할 경우 자바스크립트를 이용해 해당 템플릿을 복사하여 쓸 수 있다.
<div id="container">
  <h2>Tweet List</h2>
  <div class="tweet">hello</div>
  <div class="tweet">world</div>
  <div class="tweet">code</div>
  <div class="tweet">states</div>
</div>
<!-- template 생성 : template 태그는 실제 페이지에 렌더링 되지 않습니다. -->
<template id="template">
  <div class="tweet">template</div>
</template>
// 브라우저가 THML 템플릿 엘리먼트를 지원하는지 확인
if ('content' in document.createElement('template')) {
  // html 템플릿을 조회하여 가져온다.
  const template = document.querySelector('#template');

  // 템플릿을 추가할 요소를 조회한다.
  const con = document.querySelector('#container');

  // 템플릿의 contents를 복제한다.
  const clone = document.importNode(template.content, true);

  // 복제한 템플릿 요소를 부모 요소에 추가한다.
  con.appendChild(clone);
}

SUMMARY

  • 두 가지 모두 미리 생성해 둔 후에 원하는 조건과 시점에 HTML 요소를 생성해 추가할 수 있다는 특징이 있다.
  • 잘 알아 두었다가 꼭 필요한 순간에 사용하자!

참고자료

https://www.zerocho.com/category/JavaScript/post/573b3235a54b5e8427432947

 

https://www.zerocho.com/category/JavaScript/post/573b3235a54b5e8427432947

 

www.zerocho.com

https://developer.mozilla.org/ko/docs/Web/HTML/Element/template

 

<template>: 콘텐츠 템플릿 요소 - HTML: Hypertext Markup Language | MDN

HTML <template> 요소는 페이지를 불러온 순간 즉시 그려지지는 않지만, 이후 JavaScript를 사용해 인스턴스를 생성할 수 있는 HTML 코드를 담을 방법을 제공합니다.

developer.mozilla.org

 

저작자표시 (새창열림)

'JavaScript > JavaScript' 카테고리의 다른 글

[JavaScript] Promise  (0) 2022.07.18
[JavaScript] 동기와 비동기  (0) 2022.07.16
DOM : Document Object Model  (0) 2022.07.14
[JavaScript] 스코프 :: 변수 접근 유효 범위  (0) 2022.07.11
[JavaScript] 콜 스택과 메모리 힙 :: 데이터의 저장 방식  (0) 2022.07.11
    'JavaScript/JavaScript' 카테고리의 다른 글
    • [JavaScript] Promise
    • [JavaScript] 동기와 비동기
    • DOM : Document Object Model
    • [JavaScript] 스코프 :: 변수 접근 유효 범위
    프라이D
    프라이D
    틀린내용 정정 및 개선사항은 언제든지 댓글 달아주세요 :D

    티스토리툴바