💡 브라우저의 UI는 주소 표시줄, 상태 표시줄, 도구 모음 등 일반적인 요소를 제외하고는 표준 명세가 정의된 바 없지만, 수 년간 서로의 장점을 모방하면서 서로 비슷한 현재에 이르게 됨
브라우저의 주요 구성 요소의 역할 다음과 같습니다.
주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분
UI와 렌더링 엔진 사이의 동작을 제어하는 역할
HTML 및 XML문서와 CSS를 파싱(분석)하여 요청한 콘텐츠를 화면에 표시해주는 역할
💡 XML(Extensible Markup Language)는 문자 기반의 마크업 언어로 데이터를 저장하고 전달할 목적으로 만들어졌으며, 태그(<>)를 사용하여 데이터의 의미를 정의하는 프로세스이다.
HTTP 요청과 같은 네트워크 호출에 사용되며, 독립적인 인터페이스로 각 플랫폼 하부에서 실행됨
콤보박스(Combo Box)와 같은 그래픽 사용자 인터페이스 위젯과 화면 상의 기본적인 장치를 그리는 것
자바스크립트 코드를 파싱하고 실행하는 역할
쿠키나 세션과 같은 로컬 데이터를 저장하는 역할
렌더링 엔진은 HTML과 CSS뿐만 아니라 플러그인 혹은 브라우저 확장 기능을 이용해 PDF 등 다른 유형의 데이터도 표시 가능
렌더링 엔진의 종류에는 모질라(Mozila)에서 제작한 게코(Gecko)엔진과 오픈소스 엔진인 웹킷(Webkit), 웹킷에서 파생된 블링크(Blink) 등이 존재
Gecko
- 파이어 폭스Webkit
- 사파리Blink
- 크롬렌더링 엔진은 서버에 요청한 문서를 응답받는 것으로 시작되며, 보통 8KB단위로 전송되며, 렌더링 엔진의 작동과정은 다음과 같습니다.
HTML 문서를 파싱하여 콘텐츠 내부의 각 태그들을 DOM에서 하나하나의 노드로 변환
CSS파일과 함께 포함도니 스타일 요소들을 파싱한 후, 스타일정보와 DOM노드를 표시규칙에 따라 렌더 트리를 구축
생성된 렌더 트리를 화면에 배치함으로써, 각 노드가 화면의정확한 위치에 표시될 수 있도록 함
배치 후 UI 백엔드에서 렌더 트리의 각 노드의 형상을 그리는 과정
UI 백엔드에서 그리기 과정이 끝나면 결과를 화면에 출력
DOM 추가 설명
DOM은 Document of Object Model의 준말로 해석하면
문서 객체 모델
이다.
>
위와 같은 문서 객체 모델을 가진다고 하면 HTML문서는
<!DOCTYPE html>
<html>
<head>
<title>My title</title>
</head>
<body>
<h1>A heading</h1>
<a href="javascript:void(0);">Link Text</a>
</body>
</html>
의 형태를 가지고 있을 것이다.
💡 href의 javascript:void(0);은 아무 작업이 실행되지 않음을 의미.