[매일CS]

[Front] DOM Tree의 개념과 방식

whatezlife 2025. 2. 26. 13:44

🚀 면접에서 나올 수 있는 DOM Tree 질문 & 답변

1️⃣ DOM Tree란 무엇인가요?

📌 답변:
DOM(Tree)은 HTML 문서를 브라우저가 이해할 수 있도록 트리(Tree) 형태의 구조로 변환한 것입니다.
브라우저는 HTML을 파싱하여 노드(Node)로 이루어진 계층 구조를 만들고, 이를 통해 자바스크립트가 HTML 요소를 조작할 수 있도록 합니다.


2️⃣ DOM Tree의 주요 노드(Node) 종류는 무엇인가요?

📌 답변:
DOM Tree는 크게 3가지 타입의 노드(Node)로 구성됩니다.

  1. 요소 노드(Element Node) → <div>, <p>, <img> 같은 HTML 태그
  2. 텍스트 노드(Text Node) → 요소 내부의 실제 텍스트 (<p>Hello</p>에서 "Hello")
  3. 속성 노드(Attribute Node) → 요소의 속성 (<img src="image.png">에서 src="image.png")

3️⃣ DOM Tree의 루트(Root) 노드는 무엇인가요?

📌 답변:
DOM Tree의 최상위(루트) 노드는 document 객체입니다.
HTML 문서는 document 객체를 통해 접근할 수 있으며, 최상위 요소인 <html> 태그를 포함하고 있습니다.


4️⃣ DOM Tree는 어떻게 생성되나요?

📌 답변:

  1. 브라우저가 HTML을 읽고 파싱합니다.
  2. 각 HTML 요소를 노드(Node)로 변환하여 DOM Tree를 생성합니다.
  3. CSS 파일을 해석하여 CSSOM Tree를 생성합니다.
  4. DOM Tree + CSSOM Tree를 합쳐 **렌더 트리(Render Tree)**를 만든 후, 화면에 표시합니다.

5️⃣ DOM Tree를 조작하는 방법에는 어떤 것들이 있나요?

📌 답변:
DOM을 조작하는 방법은 주로 JavaScript를 활용하며, 대표적인 방법은 다음과 같습니다.

  1. 요소 선택하기 → document.getElementById(), document.querySelector()
  2. 내용 변경하기 → element.textContent = "변경된 내용"
  3. 속성 변경하기 → element.setAttribute("src", "new-image.png")
  4. 이벤트 추가하기 → element.addEventListener("click", function() {...})
  5. 요소 추가/삭제하기 → document.createElement(), parentNode.appendChild(), parentNode.removeChild()

6️⃣ DOM Tree를 조작할 때 성능을 고려해야 하나요?

📌 답변:
네! DOM 조작은 브라우저의 렌더링 성능에 영향을 미치므로 최적화가 필요합니다.

  • 불필요한 DOM 변경을 줄이기 (한 번에 여러 요소 변경 시 DocumentFragment 사용)
  • Reflow/Repaint 최소화하기 (클래스를 한 번에 변경)
  • 이벤트 위임(Event Delegation) 사용 (document.addEventListener() 활용)

📖 DOM Tree 개념 쉽게 설명하기

✅ 1. DOM이란?

DOM(Document Object Model)은 HTML 문서를 브라우저가 이해할 수 있도록 트리(Tree) 구조로 변환한 것을 말해요.
쉽게 말하면, 웹 페이지를 JavaScript가 조작할 수 있도록 만든 "HTML의 지도" 같은 거예요.

✅ 2. DOM Tree는 어떻게 생겼을까?

예를 들어, 아래 HTML을 보자!

<!DOCTYPE html>
<html>
<head>
  <title>DOM Tree</title>
</head>
<body>
  <h1>Hello, World!</h1>
  <p>이것은 DOM Tree 예제입니다.</p>
</body>
</html>

이 HTML 문서는 브라우저에서 아래와 같은 트리(Tree) 구조로 변환돼요!

document
 ├── html
 │   ├── head
 │   │   ├── title
 │   │   │   └── "DOM Tree"
 │   ├── body
 │       ├── h1
 │       │   └── "Hello, World!"
 │       ├── p
 │           └── "이것은 DOM Tree 예제입니다."

이렇게 HTML 요소들이 부모-자식 관계를 이루며 트리 형태로 정리되는 거죠!


✅ 3. DOM Tree는 어떻게 만들어질까?

웹 페이지가 로드될 때 브라우저는 아래 과정을 거쳐 DOM Tree를 만듭니다.

  1. HTML을 읽고 → <html> 태그부터 시작해서 모든 요소를 분석
  2. 각 태그를 노드(Node)로 변환 → document 객체를 만들고, html, body, p 등을 구조화
  3. 완성된 DOM Tree를 메모리에 저장

✅ 4. DOM Tree를 조작하는 방법

HTML을 변경하려면 JavaScript로 DOM을 조작하면 돼요!

📌 1) 요소 선택하기

const heading = document.querySelector("h1");
console.log(heading.textContent);  // "Hello, World!" 출력

📌 2) 요소 내용 변경

heading.textContent = "DOM 조작 성공!";

🔹 실행하면 <h1>Hello, World!</h1> → <h1>DOM 조작 성공!</h1> 로 변경돼요!

📌 3) 새로운 요소 추가

const newParagraph = document.createElement("p");
newParagraph.textContent = "새로운 문장이 추가됨!";
document.body.appendChild(newParagraph);

🔹 실행하면 <p>새로운 문장이 추가됨!</p>가 화면에 추가돼요!

📌 4) 버튼 클릭 시 내용 변경

document.querySelector("button").addEventListener("click", function() {
  document.body.style.backgroundColor = "lightblue";
});

🔹 실행하면 버튼 클릭 시 배경색이 변경돼요!


🎯 마무리: DOM Tree 이해하면 뭐가 좋을까?

  • 웹 페이지의 구조를 이해할 수 있다!
  • JavaScript로 HTML을 자유롭게 변경할 수 있다!
  • 사용자 이벤트(클릭, 입력 등)를 처리할 수 있다!

🚀 이제 DOM Tree의 개념과 조작 방법을 이해했으니, 면접에서 자신 있게 대답할 수 있을 거야! 😎🔥

'[매일CS]' 카테고리의 다른 글

[Back] 일급 컬렉션에 대해 설명해주세요  (0) 2025.02.14