브라우저가 HTML을 렌더링 하는 과정 🎨

진정한 개발자·2024년 9월 9일

html

목록 보기
2/2
post-thumbnail

브라우저가 HTML 파일을 렌더링하는 과정은 여러 단계를 거쳐 이루어집니다.
이 과정을 쉽게 이해할 수 있도록 번호 순서로 설명하겠습니다.

브라우저가 HTML 파일을 렌더링하는 과정은 복잡해 보일 수 있지만, 차근차근 설명하면 쉽게 이해할 수 있어요! 😊
이 과정을 번호 순서대로 친절하게 설명해드릴게요.


1. URL 입력 및 요청 🚀

먼저, 사용자가 브라우저에 URL을 입력하면 브라우저가 서버에 요청을 보내요.
이 요청은 "이 웹 페이지를 보여줘!"라는 의미로, HTTP 또는 HTTPS 프로토콜을 통해 서버에 전달됩니다.
이때 브라우저는 요청에 필요한 정보(브라우저 종류, 쿠키 등)를 같이 보내죠.


2. 서버 응답 및 리소스 수신 📦

서버는 요청을 받으면 해당 웹 페이지를 구성하는 여러 리소스를 브라우저로 보냅니다.
여기에는 HTML 문서, CSS 파일, JavaScript 파일, 이미지 등이 포함돼요.
브라우저는 이 데이터를 받아서 처리 준비를 합니다. 이 단계에서는 웹 페이지의 기본 재료가 준비된다고 생각할 수 있어요! 🍽️


3. HTML 파싱 (DOM 트리 생성) 🧱

브라우저가 HTML 문서를 수신하면 이를 차례로 읽으며 DOM (Document Object Model) 트리를 생성합니다.
이 DOM 트리는 HTML 문서의 구조를 표현하는 자료구조로, 웹 페이지의 모든 요소와 그 관계를 트리 형태로 나타냅니다.

DOM 트리는 웹 페이지를 동적으로 조작하기 위한 브라우저에 탑재된 필수적인 자료구조입니다.
각 HTML 태그는 DOM의 노드로 변환되어 브라우저 메모리에 저장되며, 자바스크립트 등을 사용하여 언제든지 접근하고 조작할 수 있죠.

예를 들어, HTML 파일이 다음과 같다면:

<html>
  <head>
    <title>My Page</title>
  </head>
  <body>
    <h1>Welcome!</h1>
    <p>This is a simple page.</p>
  </body>
</html>

이 HTML 문서가 파싱되면, 브라우저는 다음과 같은 DOM 트리를 준비합니다:

- html
  ├─ head
  │  └─ title ("My Page")
  └─ body
     ├─ h1 ("Welcome!")
     └─ p ("This is a simple page.")

이 DOM 트리는 각 HTML 요소가 계층 구조로 표현되며, 부모-자식 관계로 연결됩니다.
예를 들어, <body> 요소는 <h1><p> 요소의 부모이며, 각 요소는 자신만의 텍스트 또는 다른 자식 노드를 가질 수 있습니다.

DOM 트리가 준비된 후, 브라우저는 자바스크립트를 통해 이 트리를 동적으로 수정할 수 있어요.
예를 들어, 자바스크립트를 통해 <p> 태그의 내용을 바꾸거나, 새로운 요소를 추가하거나 삭제할 수 있습니다.
DOM은 웹 페이지와 상호작용하는 데 핵심적인 역할을 하기 때문에, 이 트리가 완성되는 것이 렌더링 과정에서 매우 중요해요! 🧩


4. CSS 파싱 (CSSOM 트리 생성) 🎨

HTML을 파싱하면서 동시에, 브라우저는 CSS 파일도 읽습니다.
CSS는 페이지의 스타일을 정의하는데, 이 과정에서 CSSOM(CSS Object Model) 트리가 생성됩니다.
CSSOM 트리는 DOM 트리와 함께 작동해 각 HTML 요소가 어떤 스타일을 적용받을지를 결정해요.

  • 예를 들어, <p> 태그가 있다면, 이 태그가 빨간색 글씨인지, 혹은 굵은 글씨인지를 CSSOM 트리에서 결정합니다.
    이렇게 해서 웹 페이지의 외관을 완성할 준비가 되는 거죠! 🖌️

5. 렌더 트리 생성 🌟

이제 DOM 트리와 CSSOM 트리가 준비됐으니, 브라우저는 이 둘을 합쳐서 렌더 트리를 만듭니다.
렌더 트리는 화면에 표시할 요소들만 포함하는데요, 여기서 display: none처럼 숨겨진 요소들은 제외됩니다.

  • 이렇게 해서 렌더 트리는 화면에 실제로 무엇을 어떻게 보여줄지 결정해요. 그동안 만들어진 구조와 스타일을 바탕으로 "이제 화면에 그려볼까?"라는 단계에 돌입합니다. 🎨🖥️

6. 레이아웃 계산 및 그리기 (페인팅) 🖼️

렌더 트리가 준비되면, 브라우저는 각 요소의 크기와 위치를 계산해요.
이를 레이아웃 단계라고 합니다. 그 후, 브라우저는 요소들의 스타일과 위치 정보를 바탕으로 화면에 실제로 그리는 작업, 즉 페인팅(painting)을 합니다.

  • 이때 화면에 보이는 텍스트, 이미지, 색상 등이 모두 그려지게 됩니다. 웹 페이지가 눈앞에 딱 나타나는 순간이에요! ✨

7. JavaScript 실행 🧩

이제 웹 페이지가 화면에 표시되었으니, 마지막으로 JavaScript가 동작할 차례입니다.
브라우저는 HTML 문서에 포함된 JavaScript 파일을 실행해서 동적인 기능을 추가해요.
예를 들어, 버튼을 클릭했을 때 이벤트가 발생하거나, 페이지가 동적으로 업데이트되는 일이 가능해집니다. 🛠️


8. 사용자 인터랙션 처리 및 반복 🔄

웹 페이지는 정적인 정보만 보여주는 게 아니라, 사용자와 상호작용이 가능하죠.
사용자가 스크롤하거나 버튼을 클릭하면, 브라우저는 그에 맞춰 페이지를 다시 렌더링하거나 새로운 데이터를 불러와서 업데이트합니다.
이 과정을 반복하면서 동적으로 웹 페이지가 변화하는 거죠! 🤖


이렇게 브라우저는 단계적으로 HTML을 받아서 화면에 표시하고, JavaScript를 통해 동적 기능을 실행합니다.
브라우저가 단순히 파일을 받는 것뿐만 아니라, 매우 복잡한 과정을 거쳐 우리가 매일 사용하는 웹 페이지를 그려내는 거예요! 🌐

profile
개발자 진정한 입니다

0개의 댓글