일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- RARP
- 데이터 통신과 컴퓨터 네트워크
- 라우팅
- 노마드코더
- 자료형
- 파이썬 정렬
- 이것이 취업을 위한 코딩테스트다
- OSI7계층모델
- data type
- GIT
- icmp
- 데이터통신
- 쿠키
- IT5분잡학사전
- 컴퓨터 동작방식
- 북클럽
- 이것이 취업을 위한 코딩 테스트다
- 노개북
- 시스템 소프트웨어
- ARP
- 이코테
- 파이썬 자료형
- 파이썬 연산자
- DP
- 컴퓨터네트워크
- 기억장치
- 쉽게 배우는 데이터 통신과 컴퓨터 네트워크
- CS
- 리스트
- sort()
Archives
- Today
- Total
뚝딱햄 탈출기
[기술면접대비] BOM, DOM, Virtual DOM 본문
BOM (Browser Object Model)
브라우저의 창이나 프레임을 프로그래밍적으로 제어할 수 있게 해주는 객체모델 이다.
이를 통해서 브라우저의 새 창을 열거나 다른 문서로 이동하는 등의 기능을 실행시킬 수 있다.
전역객체로 window 가 있으며 하위 객체들로는 location, navigator, document, screen, history 가 포함되어 있다.
DOM (The Document Object Model)
- DOM은 HTML같은 문서의 구조와 정보를 나타내는 트리 형태의 자료구조이다.
- 위에서부터 아래로 순차적으로 탐색
- 여러 요소를 수정해야 한다면 비효율적이다.
- DOM API를 통해 DOM 구조에 접근해서 조작할 수 있다.
- DOM API란 DOM을 조작하는 데 사용되는 프로퍼티와 메소드들의 집합
- 이는 js의 querySelector()나 getElementById()와 같은 역할을 한다.
- DOM을 조작해서 HTML 요소의 속성이나 스타일, 이벤트 등을 수정할 수 있다.
- DOM 트리 안에 각각의 element가 사용하는 node가 들어있다.
Virtual DOM이란 ?
리액트는 Virtual DOM이라는 개념을 통해 UI를 관리하고, 실제 DOM 과 동기화해서 화면을 변경한다.
Virtual DOM은 실제 DOM과 같은 내용을 담고있는 복사본으로, 실제 브라우저에 직접적으로 접근할 수 없고 수정할 수 없다.
Virtual DOM을 사용하는 이유는?
- DOM을 수정하면 렌더링 과정 중 레이아웃이나 페인트 과정이 다시 발생한다. (= 리플로우, 리페인트 과정 발생)
- 반응형 웹에서 특히 리플로우와 리페인트가 많이 발생한다.
- 리플로우와 리페인트 과정이 많이 발생하면 브라우저 성능이 떨어진다. (특히 리플로우)
- 따라서 Virtual DOM을 통해 DOM에 일괄적으로 변경 사항을 적용하는 Batch Update를 수행함으로써 성능을 최적화한다.
Virtual DOM 작동 방식
- 리액트는 항상 두 개의 가상돔을 갖는다.
- 변경 이전의 내용을 담은 가상돔
- 변경 이후 보여질 내용을 담은 가상돔
- 변경된 내용이 화면에 새로 그려지기 전에 (= 실제 DOM이 변경되기 전에) 두 가상돔을 비교해 변경된 부분을 파악한다. ⇒ Diffing
- Batch Update를 수행함으로써 변경 부분을 실제 DOM에 한 번에 적용시킴. ⇒ Reconsiliation (재조정)
Virtual DOM은 항상 좋은가?
장점
- 불필요한 렌더링을 최소화해 성능을 향상시킨다.
- 가상 돔은 변화를 감지하면 재조정 과정을 통해 실제 돔과 동기화한다.
- 재조정 과정
- UI가 변경 감지 ⇒ UI를 가상 돔으로 렌더링
- 현재 가상 돔과 이전 가상 돔을 비교해 차이 계산 (Diffing 알고리즘)
- 변경 부분을 실제 돔에 반영 (Batch Update 수행)
단점
- 실제 DOM과 동일한 구조를 메모리에 유지해야 하므로 추가적인 메모리를 사용한다.
- 간단한 UI를 개발하는 경우 불필요한 오버헤드일 수 있다.
부분 렌더링
- 부분 렌더링은 가상 DOM 트리의 일부만 업데이트하여 전체 페이지를 다시 렌더링하는 대신 성능을 향상시키는 기술이다.
- 조건부 렌더링을 통해 부분 렌더링을 구현할 수도 있다.
- if 문, switch 문, && 연산자 등을 사용하여 변경된 부분만 렌더링합니다.
'web' 카테고리의 다른 글
[기술면접대비] HTTP, GET-POST 메서드의 차이?, REST API란? (0) | 2024.05.02 |
---|---|
[기술면접대비] 브라우저의 동작 원리와 페이지 렌더링 과정 (0) | 2024.03.14 |
[JavaScript] jQuery 제이쿼리 (0) | 2023.10.09 |
Ajax : 개념, 실습 (0) | 2023.10.09 |
부트스트랩 Bootstrap : 개념, 실습 (2) | 2023.10.08 |
Comments