브라우저의 렌더링이란 브라우저가 어떻게 HTML, CSS, JavaScript를 해석해서 화면에 출력하는 것을 의미한다.
파싱: 구문분석, 문자열을 토큰단위로 분해하는 것을 의미한다.토큰: 문법적으로 더 이상 나눌 수 없는 코드의 기본 요소렌더링: HTML, CSS, JavaScript을 파싱해서 브라우저에 시각적으로 나타낸 것리소스: HTML, CSS, JavaScript, Image 등의 파일들을 의미HTML로 DOM, CSS로 CSSOM을 생성한다.DOM과 CSSOM을 결합하여 렌더트리를 생성한다.JavaScript로 AST를 생성한다.AST를 바이트코드로 변환한 후 DOM과 CSSOM의 변화를 적용하고 렌더트리를 생성한다.렌더트리를 기반으로 레이아웃을 결정하고, 화면에 페인팅한다.리소스로 받아온 HTML은 순수한 텍스트이다.
순수한 텍스트는 브라우저가 이해할 수 없기 때문에 DOM으로 변환하는 것이다.
이 때 DOM으로 변환하는 과정을 파싱이라고 하며, DOM은 자료구조(객체)이다.
<mata>의 charset의 값을 기준으로 인코딩 방식을 정함DOM이라고 부름DOM을 생성하던 도중에 <link>나 <style>을 만나면 DOM생성을 중지하고 CSS를 파싱한다.
CSSOM 생성과정은 DOM과 비슷하게 진행된다. ( 생략 )
DOM과 CSSOM을 결합하여 렌더 트리를 생성한다.
렌더 트리를 이용해서 레이아웃을 계산하고, 화면에 그리는 페인팅이 처리된다.
이후 DOM이나 CSSOM이 JavaScript에 의해서 변환되는 경우에 레이아웃계산과 페인팅이 재실행된다.
DOM생성중에 <script src="">를 만나면 일시중지하고 JavaScript코드로 AST를 생성한다.
AST생성 순서AST생성함.JavaScript로드와 HTML파싱이 같이 이루어지며, JavaScript실행시에만 HTML파싱이 일시중지된다.
JavaScript로드와 HTML파싱이 같이 이루어지며, HTML파싱이 모두 끝나고 JavaScript실행이 시작된다.
<script async src="app.js"><script defer src="app.js">