[딥다이브 week2-1] 웹 페이지 렌더링이란?

Hong Day·2025년 9월 19일
0

오늘은 카테부에서 아래와 같은 주제에 대해 "왜?" 라는 질문을 하며 깊게 파고드는 딥다이브 세션을 진행해보았다.

웹 페이지 렌더링 방식이 CSR, SSR, SSG 차이에 대해 정리하시오.

그 전에, 나는 프론트엔드, 그중에서도 특히 웹에 대한 지식은 전무하기 때문에 웹 렌더링에 대해 공부해보았고, 공부한 내용들을 정리하려고 한다.



우선, 웹페이지 렌더링이란?

웹페이지는 미리 만들어지는 것을 가져오는 게 아니라 실시간으로 그려지는 것임.

실시간으로 웹사이트가 “그려지는” 과정 → 웹 브라우저의 렌더링 과정

웹 브라우저에는 크게 두가지의 엔진이 있음.

  1. 렌더링 엔진 (화면을 그려내는 것)

    : 텍스트, 이미지 리소스 파일 등등으로 이뤄진 요소들을 어떤 크기, 너비로 배치되는지, 텍스틑 어느정도 크기이며 색상은 어때야 하는지를 코드에서 해석해서 실시간으로 화면 안에 포현하는 엔진

  2. 자바스크립트 엔진 (자바스크립트 코드를 읽고 기능을 작동)

렌더링 엔진에서 다루는 언어

  • HTML : 문서에 들어갈 텍스트 내용이나 추가 이미지, 파일등을 다룸
    • HTML 파싱 → DOM (Document Object Model) 트리 생성 (문서 구조를 트리 형태로 표현)
  • CSS : 문서가 어떻게 생겼고, 그림이나 파일을 어떻게 배치할지
    • CSS 파싱 → CSSOM(CSS Object Model) 트리 생성
    • CSS 규칙들이 어떤 요소에 적용되는지 (스타일) 계산

🤔 그럼 JavaScript는?

JavaScript 는 렌더링 엔진에 포함되지 않는다 → 이름에서도 알 수 있듯이 자바스크립트 엔진

렌더링 엔진은 HTML 파싱 중 <script> 태그를 만나면 자바스크립트 엔진에 실행을 요청하고 JavaScript 코드를 실행

실행된 JS는 DOM이나 CSSOM을 수정할 수 있고, 그 결과는 다시 렌더링 엔진에 반영됨

⇒ HTML 파싱을 중단 → JavaScript 코드 실행 → 렌더링 과정을 재개하는 구조.

⇒ DOM 조작, 이벤트 처리 등 웹 페이지의 “동적인 기능” 구현을 담당함.

렌더링 엔진이 하는 일

: 웹 페이지를 불러올 때 HTML, CSS 요소들을 파싱함.

  1. HTML 처리
    : HTML 파싱 → DOM(Document Object Model) 트리 생성
    DOM은 문서 구조(태그, 속성, 텍스트 등)을 트리형태로 표현
  2. CSS 처리
    : CSS 파싱 → CSSOM(CSS Object Model) 트리 생성
    CSS 규칙들이 어떤 요소에 적용되는지 (스타일) 계산
  3. DOM + CSSOM 결합
    : 두 트리를 합쳐서 “렌더 트리(Render Tree)” 생성
    → 실제 화면에 표시될 요소와 스타일 정보만 포함됨
  4. 레이아웃 + 페인팅
    : 각 요소의 위치와 크기를 계산하여 배치 (레이아웃)
    : 계산된 위치에 픽셀 단위로 색상, 글꼴, 배경 등을 그려 화면에 출력 (페인팅 → 컴포지팅)

렌더링엔진과 자바스크립트 엔진은 긴밀히 협력함

렌더링 엔진 → HTML, CSS를 파싱해서 화면 출력

자바스크립트 엔진 → JS 코드 실행, DOM/CSSOM 조작

  • 렌더링 엔진이 DOM/CSSOM을 관리
  • 자바스크립트 엔진이 이를 수정
  • HTML 파싱 중단 → JS 실행 → 렌더링 재개
  • JS 실행 중 변경 사항이 있으면 다시 레이아웃/페인팅이 일어남 (리렌더링)

DOM (Document Object Model)

: 자바스크립트 Node 객체들의 계층화된 트리임.

  • HTML파일의 태그와 포함구조를 파싱하여 컴퓨터가 연산하기 쉽도록 Object Model로 만들어 낸 것
  • DOM의 목적은 자바스크립트를 사용해서 페이지 내 모든 요소들을 쉽게 조작할 수 있도록 프로그래밍 “인터페이스”를 제공하는 것임.

CSSOM

HTML과 동일하게 CSS를 컴퓨터가 연산할 수 있는 트리형태인 Object Model로 만드는 것

  • CSS 규칙과 스타일시트를 “객체”로 나타내고 이 객체를 어떻게 읽고 쓸 수 있을지에 대한 설명을 담음
  • 문서에 쓰이는 스타일 규칙을 수정할 때 DOM과 함께 쓰임 / JS로 CSS자체를 수정할 일은 많이 없음.

렌더 트리

DOM과 CSSOM을 합쳐서 한꺼번에 같이 표현한 트리

DOM과 CSSOM은 모든 요소들의 구조와 텍스트가 다 포함되어있지만, Render Tree는 실제 화면에 표현되는 리소스들로만 노드들이 구성된다.



이제 렌더링 방식들에 대해 공부하기 위한 빌드업을 끝냈다. 다음 포스트에서 본격적으로 렌더링 방식에 대해 공부해보겠다.



출처

https://opendeveloper.tistory.com/entry/FrontEnd-지식브라우저-렌더링-원리와-순서성능-최적화-고려사항

https://ko.wikipedia.org/wiki/브라우저_엔진

profile
🫵 안녕하세요, 백엔드 공부하는 초보개발자 홍대의 입니다!

0개의 댓글