
웹 브라우저 DOM 파서가 HTML을 분석하는 방식, Document를 재구성하는 방식에 대해 학습
DOM
HTML 문서의 계층적 구조를 표현하는 객체 모델
DOM 파서는 이러한 DOM 트리를 생성하는 핵심 구성 요소
브라우저가 HTML 문서를 받아서 화면에 그리기까지의 과정을 Critical Rendering Path라고 한다.
HTML 문자열 -> 한 글자씩 읽기 -> 토큰으로 변환
예시:
<div>Hello</div>
↓
토큰 1: <div> (시작 태그)
토큰 2: Hello (텍스트)
토큰 3: </div> (종료 태그)
토큰들 -> 문법 규칙 적용 -> DOM 트리 생성
예시:
div 노드
└── 텍스트 노드: "Hello"
HTML 요소들 -> 계층적 객체 구조 -> DOM 트리
<script> 태그를 만나면 HTML 파싱을 일시 중단| 단계 | 역할 | 입력 | 출력 |
|---|---|---|---|
| 토크나이저 | HTML을 토큰으로 쪼개기 | HTML 문자열 | 토큰 배열 |
| 파서 | 토큰을 구조화 | 토큰 배열 | DOM 트리 |
Document?
웹 브라우저에서 HTML 문서 전체를 나타내는 객체
즉,<html>태그를 포함한 전체 웹페이지
모든 HTML 요소들은 이 Document 아래에 계층적으로 구성된다
브라우저가 HTML을 처음 받으면 아래와 같은 과정이 진행된다.
HTML 문자열 -> 토큰화 -> 파싱 -> DOM 트리 -> Document 객체 생성
JS를 통해 DOM을 변경할 때 Document가 재구성된다.
e.g.) 요소 추가: document.createElement()
변경 감지
DOM 트리 업데이트
렌더 트리 재구성
레이아웃 계산 (리플로우)
화면 그리기 (리페인트)