
주소 표시줄, 이전/다음/새로고침 버튼 등 웹 페이지를 제외하고 사용자와 상호작용 하는 사용자 인터페이스
유저 인터페이스와 렌더링 엔진을 연결하는 브라우저 엔진
HTML과 CSS를 파싱하여 요청한 웹 페이지를 표시하는 렌더링 엔진
각종 네트워크 요청을 수행하는 네트워킹 파트
체크박스나 버튼과 같은 기본적인 위젯을 그려주는 UI 백엔드 파트
자바스크립트 코드를 실행하는 인터프리터(V8)
localStorage나 Cookie와 같이 보조 기억장치에 데이터를 저장하는 파트
HTML, CSS, JS, 이미지 등 웹 페이지에 포함된 모든 요소를 화면에 보여준다
업데이트가 필요할 때, 효율적으로 렌더링을 할 수 있도록 자료구조를 생성한다
html 파일은 파싱되며 토큰화, 렉싱 과정을 통해 노드 객체(HTML Element, Attribute, Text, comment)로 변환 및 DOM 트리 생성
css 파일도 CSSOM Tree를 생성
Render Tree는 스타일을 해당 요소 노드에 추가하며 화면에 표시되어야 할 모든 노드의 컨텐츠, 스타일 정보를 포함하는 트리
스타일 속성이 계산, 상대값 뷰포트에 맞춰 픽셀로 변환
렌더 트리에 포함된 요소들이 그려짐
처음 렌더링된 후, JS로 인해 UI가 업데이트된다면?
주로 요소의 크기나 위치가 바뀔 때, 혹은 브라우저 창의 크기가 바뀌었을 때 다시 발생
주로 배경 이미지나 텍스트 색상, 그림자 등 레이아웃의 수치를 변화시키지 않는 스타일의 변경이 일어났을 때 발생
Layout과 Paint를 수행하지 않고 레이어의 합성만 발생하기 때문에 성능상으로 가장 큰 이점을 가짐
개발자도구의 perfomance, paint flash를 통해 성능 확인 가능
csstriggers.com