<aside> 💡 DOM에서 태그는 실제로 스크립트를 이용해 어딘가에 붙여넣기 전까지는 화면에 보이지않는 HTML 조각이라고 하셨는데, 이 HTML 조각을 사용하는 주된 이유가 뭔가요? HTML fragment라고 구글링해봤는데 이게 언제 사용되는건지 모르겠어서요. (스크립트를 이용해 붙여넣기 전까지 화면에 보이지 않는다는 게 그 때까지는 작동하지 않는다는 건가요?)
</aside>
https://developer.mozilla.org/en-US/docs/Web/API/Document/createDocumentFragment
Creates a new empty DocumentFragment into which DOM nodes can be added to build an offscreen DOM tree.
자바스크립트에서 만들어진 DOM nodes(createElement나 기타 자바스크립트 메소드를 통해 만든 HTML 엘리먼트들...)이 추가될 수 있도록 준비된 최소한의 것 이라고 생각해주시면 될 것 같습니다.
div tag에 새로운 HTML element를 추가해서 appendChild 메소드를 사용해 넣을 수도 있겠지만DocumentFragment를 사용하면 따로 생성되는 HTML element가 없이 추가되지 않는 차이가 있어,코드량이 조금 줄게 됩니다. (MDN 한국어는 오역이 좀 있네요.)
실제 활용법은 다음과 같습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
</head>
<body>
<span id="here"></span>
<script src="index.js"></script>
</body>
</html>
const fragment = document.createDocumentFragment();
const li = document.createElement("li");
li.textContent = "I'm li element";
const p = document.createElement("p");
p.textContent = "I'm p element";
fragment.appendChild(li);
fragment.appendChild(p);
const here = document.querySelector("#here");
here.appendChild(fragment);