- 주소창에 naver.com을 치면
- 브라우저 렌더링
- Incremental Rendering
주소창에 URL을 입력했을 때, 어떤 일이 벌어질까.
Domain Name System
의 줄임말인 DNS는 우리가 입력한 도메인을 IP로 변환해주는 작업을 한다.생각보다 복잡한 과정을 거쳐 가지고 온 데이터는 어떻게 화면에 표현될까.
DOM(Document Object Model)
, CSSOM(CSS Object Model)
Tree를 만든다.Render Tree
를 만든다.display: none
인 요소는 렌더 트리에 포함되지 않지만, visibility: hidden
인 요소는 렌더 트리에 포함된다.z-index
와는 무관하다.position
속성을 가진 요소는 모두 개별 레이어로 그려진다.position
속성을 가진 요소가 많아지면 성능에 영향을 줄 가능성이 커진다.브라우저 렌더링 성능을 개선하려면 어떤 방법이 있을까.
Incremental Rendering
은 변동사항이 있는 부분만을 새롭게 그리는 기법을 말한다.
React나 Vue 같은 프레임워크에서 자연스럽게 수행되고 있는 과정 중에 하나이기도 하다.
React는 가상 DOM
이라는 개념을 통해, 실제 DOM
과 가상 DOM
을 비교해서 변동사항이 있는 부분만 렌더링한다.
Vue는 가상 DOM
이 아닌 데이터
를 기준으로 변경된 데이터가 있는 컴포넌트를 렌더링한다.
// 가상 DOM 생성
let virtualDOM = {
counter: 0,
};
// 실제 DOM 요소
const counterElement = document.getElementById('counter');
// 카운터를 증가시키는 함수
function incrementCounter() {
// 가상 DOM의 값을 업데이트
virtualDOM.counter += 1;
// 변경된 부분만 실제 DOM에 업데이트
counterElement.textContent = virtualDOM.counter;
}
// 버튼 클릭 이벤트에 카운터를 증가시키는 함수를 연결
const buttonElement = document.getElementById('incrementButton');
buttonElement.addEventListener('click', incrementCounter);