반응형
⭕ 웹 구조 Web | 브라우저 렌더링 : CRP 프로세스
- 브라우저는 웹 페이지를 화면에 표시할 때, 렌더링 엔진들은 HTML, CSS, JavaScript 파일을 처리하며 CRP 프로세스를 따릅니다.
- 렌더링 엔진
- 크롬(Chrome): Blink 엔진
- 사파리(Safari): Webkit 엔진
- 파이어폭스(Firefox): Gecko 엔진
➡️ CRP (Critical Rendering Path)
➡️ DOM(Document Object Model) 트리 생성
- HTML 파싱 후, DOM 트리를 생성합니다.
- 파싱
- 웹 페이지나 앱이 실행될 때, 브라우저의 자바스크립트 엔진 같은 런타임 환경이 이해할 수 있는 형태로 코드를 변환하는 과정을 말합니다.
- 웹 문서를 작은 조각들인 '토큰(token)'으로 분리하고, 문법적인 구조를 가진 '파스 트리(Parse tree)'를 만들어내는 작업입니다.
- DOM(Document Object Model)
- 웹 페이지의 구성 요소(HTML 태그들)를 브라우저가 트리 구조의 객체 모델로 만들어 자바스크립트 등의 스크립팅 언어가 사용할 수 있도록 하는 것을 말합니다.
➡️ CSSOM(CSS Object Model) 트리 생성
- CSS 파싱 후, CSSOM 트리를 생성합니다.
➡️ JS 실행
- HTML 코드를 파싱 하다가 중간에 JS 코드를 만나면, 브라우저는 HTML 파싱을 일시적으로 중단합니다.
- 파싱이 중단되면, 브라우저는 JS 코드를 처리하기 위해 JS 엔진에 제어권을 넘깁니다.
- JS 실행이 완료되면, 렌더링 엔진은 제어권을 다시 받아 중단된 부분부터 HTML 파싱을 계속하고 DOM 트리 생성을 재개합니다.
[프론트엔드/Javascript] - 자바스크립트 JavaScript | 렌더링 중단 : 스크립트 실행이 렌더링에 미치는 영향
➡️ Render 트리 생성
- DOM 트리와 CSSOM 트리를 결합하여 Render 트리를 생성합니다.
- 실제로 화면에 렌더링될 요소들만 포함합니다.
➡️ Layout
- Render 트리의 각 노드에 대해 브라우저가 요소의 정확한 위치와 크기를 계산합니다.
➡️ Paint
- 계산된 Layout을 바탕으로 요소들을 화면에 그립니다.
반응형
'프론트엔드 > HTML & CSS & Javascript' 카테고리의 다른 글
CSS | 요소(Element)와 클래스(Class)의 차이 (79) | 2024.05.16 |
---|---|
자바스크립트 JavaScript | JavaScript 변수 선언: var, let, const의 차이점 및 호이스팅 (73) | 2024.05.14 |
자바스크립트 JavaScript | 스크립트 로딩 최적화: defer와 async 속성 (74) | 2024.05.14 |
자바스크립트 JavaScript | 렌더링 중단 : 스크립트 실행이 렌더링에 미치는 영향 (74) | 2024.05.14 |
CSS | 플렉스(Flex, Flexbox, Flexible Box Layout) 레이아웃 배치 (73) | 2024.05.14 |
CSS | position 위치 속성: Static, Relative, Absolute, Fixed, Sticky (74) | 2024.05.14 |
CSS | 여백 속성: Margin 및 Padding (74) | 2024.05.14 |
CSS | background-size 속성: contain 및 cover (73) | 2024.05.14 |