[인터뷰준비] 브라우저는 어떻게 렌더링 하는가?

Bonggus·2021년 10월 27일
1

브라우저공부

목록 보기
5/9
post-thumbnail

브라우저 렌더링

1. 웹브라우저의 기본적 구조

1.1 사용자 인터페이스

  • 브라우저
  • 주소창, 뒤로가기, 앞으로가기, 새로고침 등
  • 웹 페이지에서 보이는 부분 외의 영역

1.2 브라우저 엔진

  • 사용자 인터페이스와 렌더링엔징을 연결해주는 역할

1.3 렌더링 엔진

  • HTML, CSS, JS를 사용자에게 렌더링(화면에 보여줌)라는 역할
  • 코드를 해석하며 다운받아야할 이미지, 스크립트, 스타일 태그가 있으면 통신을 통해 다운받는다
  • 자바스크립트를 해석하는 역할
  • 브라우저별로 기본으로 보여주는 UI가 다르다.브라우저별로 만들어진 UI를 준비하는 역할

1.4 자료저장소

  • 쿠키와 같은 지속적으로 저장되어야할 자료가 저장되어 있는 공간이다

2. 렌더링 엔진

2.1 파싱

  • HTML을 파싱하여 DOM으로 변환한다.
  • 오타 혹은 잘못된 문법을 사용할 경우 예외처리를 사용한다
  • link, img 태그를 만다면 필요한 리소스(정보)를 다운로드 한다
  • script 태그를 만나면 DOM 파싱을 중단하고 자바스크립트를 해석한다.
    • WHY? script 안에 DOM구조를 변환시킬 수 있는 가능성이 있기 때문이다.

2.2 스타일 계산

  • CSS를 파싱하여 CSSOM으로 변환한다.
  • CSSOM은 CSS Object Model이다
  • CSS를 트리형태 구조로 변환해 DOM과 CSSOM을 합쳐 DOM Node의 스타일을 결정한다.


2.3 레이아웃

  • 레이아웃트리(렌더트리)를 생성한다
  • DOM과 계산된 스타일을 따라가며 요소의 크기나 좌표와 같은 정보를 담은 레이아웃 트리를 생성한다.
  • 화면에 표현되는 정보만 트리에 담긴다
    • display: none X, meta tag X
    • CSS로 만든 가상요소 O

2.4 페인트(실제 그려지는 단계)

  • 레이아웃 트리가 생성되면 이 트리를 따라 페인트 기록이 생성된다.
  • 페인트 기록에는 요소를 렌더링하는 순서가 저장된다.
  • 그리고 지금까지의 정보를 바탕으로 한 페이지를 여러개의 레이어로 나눈 뒤 그 위에 텍스트, 색, 이미지, 보더, 그림자 등의 모든 시각적 부분이 그려진다

2.5 컴포지팅

  • 가각 레이어를 스크린에 픽셀로 표현한다
  • 나눠었던 레이어들을 합성해 페이지를 그린다.

3. 정리

  • 파싱: HTML을 파싱하여 트리모델 생성
  • 스타일계산: DOM + CSSOM = 스타일 확정
  • 레이아웃: 요소의 크기와 좌표 정보가 계산
  • 페인팅: 레이어 위에 시각적인 부분을 그린다
  • 컴포지팅: 만들어진 레이어를 픽셀화하고 다시 합성

출처

코딩인터뷰를 저격한 JS스터디

profile
프론트엔드

0개의 댓글