- 주소창에 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);