
웹 개발에서 자주 등장하는 용어인 트리, DOM, 노드는 HTML 문서를 구조적으로 표현하고 조작하기 위한 핵심 개념입니다.
트리는 계층 구조를 표현하기 위한 자료구조입니다.
하나의 루트(Root) 노드에서 시작하여 자식 노드로 계속 뻗어나가는 구조를 가집니다.
A
/ | \
B C D
|
E
웹 문서는 이런 계층적 구조를 그대로 가지고 있기 때문에 트리로 표현하기에 적합합니다.
DOM은 HTML 문서를 트리 구조로 표현한 객체 모델입니다.
브라우저는 HTML 문서를 받아 DOM 트리 구조로 만들고, 이 구조를 통해 HTML 요소를 제어하고 그립니다.
<body>
<h1>제목</h1>
<p>문단</p>
</body>
<body>
├── <h1>
│ └── "제목"
└── <p>
└── "문단"
DOM 트리를 구성하는 각각의 점을 노드라고 합니다.
브라우저는 HTML 문서의 구성 요소를 모두 노드로 취급하며, 종류는 다음과 같습니다.
| 노드 종류 | 설명 |
|---|---|
| Document 노드 | 전체 문서를 나타내는 최상위 루트 노드 |
| Element 노드 | 실제 HTML 태그 (<div>, <p> 등) |
| Text 노드 | 태그 내부의 텍스트 내용 |
| Comment 노드 | HTML 주석 (<!-- 주석 -->) |
<p>Hello, <strong>world</strong>!</p>
<p>
├── "Hello, "
└── <strong>
└── "world"
자바스크립트는 DOM을 통해 HTML 문서의 구조와 내용을 제어합니다.
document.querySelector('p').innerText = "수정된 문장";
<p> 요소를 선택해 그 안의 텍스트 노드를 변경하는 코드입니다.<h1>, <p>, <img> 등)는 모두 DOM의 노드로 취급됩니다.