주소 창, 뒤로/앞으로 버튼, 즐겨찾기 메뉴 등을 포함하며, 요청된 페이지가 표시되는 메인 창을 제외한 모든 부분
브라우저 엔진은 UI와 렌더링 엔진 사이에서 중개자 역할을 합니다. 사용자 인터페이스에서 수신한 입력에 따라 렌더링 엔진을 쿼리하고 처리합니다. 또한, 브라우저 엔진은 문서들 간의 보안 정책을 강제하며 페이지 스크립트에 노출되는 문서 객체 모델 (DOM), 자료 구조를 관리합니다. 이 과정에서 렌더링 엔진과 긴밀하게 협력하여 최종적으로 화면에 페이지를 표시합니다.
렌더링 엔진은 HTML과 CSS를 파싱하여 화면에 표시합니다. HTML 문서를 해석하여 DOM 트리를 구축하고, CSS를 적용하여 레이아웃을 계산한 후, 페인팅 과정을 통해 화면에 텍스트와 이미지를 그립니다. 렌더링 엔진은 브라우저 엔진과 협력하여 최종적인 페이지를 사용자 인터페이스에 표시합니다.
네트워킹 모듈은 HTTP 요청과 같은 네트워크 호출에 사용되며, 플랫폼 독립적인 인터페이스를 제공합니다. 네트워킹 모듈이 데이터를 받아오면 브라우저 엔진과 렌더링 엔진이 이를 처리하여 화면에 표시할 준비를 합니다.
JavaScript 엔진은 자바스크립트 코드를 파싱하고 실행하는 역할을 합니다. 예를 들어, Google Chrome의 JavaScript 엔진은 V8 엔진으로, 자바스크립트를 기계어로 컴파일한 후 실행합니다. 이 과정에서 애플리케이션의 로직을 수행하고, DOM 조작을 통해 페이지를 동적으로 변화시킵니다.
기본적인 위젯(콤보 박스, 창 등)을 그리는데 사용되는 인터페이스
브라우저의 데이터 저장소는 쿠키, 로컬 스토리지, 세션 스토리지 등과 같은 데이터를 하드 디스크에 저장하는 지속성 레이어입니다. 이는 브라우저가 사용자 데이터를 관리하고 유지하는 데 중요한 역할을 합니다.
브라우저 엔진과 렌더링 엔진은 밀접하게 결합되어 있어 하나의 브라우저 엔진으로 언급되기도 합니다.
index.html
)을 브라우저 엔진에 전달합니다.index.html
을 파싱하고, DOM 트리를 구축합니다.index.html
의 <script>
태그를 만나면 브라우저 엔진이 V8 엔진을 호출하여 자바스크립트 코드를 실행합니다. defer
속성이 있는 스크립트는 DOM 구축이 완료된 후 실행됩니다.ReactDOM.createRoot()
또는 ReactDOM.render()
가 호출되어 루트 컴포넌트가 렌더링됩니다.그러나 실제로 브라우저의 여러 구성 요소(JS(V8) 엔진, 렌더링 엔진, 브라우저 엔진)들은 긴밀하게 상호작용하며 작동합니다.
참고
위키피디아 - 브라우저 엔진
Understanding the Role of Rendering Engine in Browsers