browser rendering process
브라우저가 렌더링하는 과정을 간단하게 설명한다(uri 입력부터 서버와 통신하여 렌더링까지)
이떄 브라우저의 각 요소(element)의 기능을 함께 설명한다
렌더링 엔진은 URI를 통해 요청을 받아서 해당하는 데이터를 렌더링하는 역할을 담당한다
chrome 과 IOS 는 webkit 이라는 rendering engine 을 사용한다
DOM tree 구축
을 위한 HTML parsing, CSS, Javascript parsing : HTML 문서를 파싱한 후, content tree 내부에서 tag(a, div)를 DOM node 로 변환한다. 그 다음 CSS 파일과 함꼐 모든 스타일 요소를 파싱한다. 스타일 요소와 HTML 표시 규칙, Javascript 의 파싱 결과물은 render tree 를 생성한다render tree 구축
: HTML 과 CSS 를 파싱해서 만들어진 render tree 는 색상 또는 면적 등 시각적 속성을 갖는 사각형을 포함한다. 정해진 순서대로 렌더링한다render tree 배치
: render tree 가 생성이 끝나면, 배치가 시작된다. 각 node 가 정확한 위치에 표시되기 위해 이동한다render tree 그리기
: 각 node 배치를 완료하면 UI 벡엔드에서 각 node를 가로지르며 paint 작업을 한다1번과 2,3,4번은 병렬적으로 진행된다
즉, 통신 레이어에서 data를 계속 받아오면서(통신 레이어)
받아온 HTML, CSS, Javascript 를 parsing 하면서(1번)
render tree에 node를 그린다(2,3,4번)
아래와 같은 HTML 을 parsing 하여 DOM tree 를 생성한다(DOM 으로 바꾼 HTML은 Javascript 가 조작할 수 있다 https://developer.mozilla.org/ko/docs/Web/API/DocumentObjectModel/%EC%86%8C%EA%B0%9C 참조)
<html>
<body>
<p>Hello World</p>
<div>
<img src="example.png" />
</div>
<script></script>
</body>
</html>
브라우저는 tag의 parsing 과 실행을 동시에 진행한다
그러므로 아래 과정으로 HTML tag 를 parsing 한다
<script>
tag 를 parsing 한다<script>
tag 를 실행한다
<script>
tag의 실행이 완료된 후, 다음 tag 를 parsing 한다
그러므로
HTML5 에서 추가된 기능이 있다
HTML5에서는
<script>
tag를 비동기로 처리하는 속성을 추가했다
css parsing process https://d2.naver.com/helloworld/59361
css parsing 하여 CSSOM 생성한다(스타일 규칙)
<html>
과 <body>
DOM node 또한 render object 로 구성되는데 이들은 render tree root로써 render view 라고 부른다배치는 <html>
요소에 해당하는 최상위 render object 에서 시작한다. 화면에 왼쪽 위부터 render object에 해당하는 DOM node를 그려나간다
render tree 탐색 후 해당하는 render object 의 paint method 를 호출한다)