오늘은 카테부에서 아래와 같은 주제에 대해 "왜?" 라는 질문을 하며 깊게 파고드는 딥다이브 세션을 진행해보았다.
웹 페이지 렌더링 방식이 CSR, SSR, SSG 차이에 대해 정리하시오.
그 전에, 나는 프론트엔드, 그중에서도 특히 웹에 대한 지식은 전무하기 때문에 웹 렌더링에 대해 공부해보았고, 공부한 내용들을 정리하려고 한다.
웹페이지는 미리 만들어지는 것을 가져오는 게 아니라 실시간으로 그려지는 것임.
실시간으로 웹사이트가 “그려지는” 과정 → 웹 브라우저의 렌더링 과정
렌더링 엔진 (화면을 그려내는 것)
: 텍스트, 이미지 리소스 파일 등등으로 이뤄진 요소들을 어떤 크기, 너비로 배치되는지, 텍스틑 어느정도 크기이며 색상은 어때야 하는지를 코드에서 해석해서 실시간으로 화면 안에 포현하는 엔진
자바스크립트 엔진 (자바스크립트 코드를 읽고 기능을 작동)
JavaScript 는 렌더링 엔진에 포함되지 않는다 → 이름에서도 알 수 있듯이 자바스크립트 엔진
렌더링 엔진은 HTML 파싱 중 <script>
태그를 만나면 자바스크립트 엔진에 실행을 요청하고 JavaScript 코드를 실행
실행된 JS는 DOM이나 CSSOM을 수정할 수 있고, 그 결과는 다시 렌더링 엔진에 반영됨
⇒ HTML 파싱을 중단 → JavaScript 코드 실행 → 렌더링 과정을 재개하는 구조.
⇒ DOM 조작, 이벤트 처리 등 웹 페이지의 “동적인 기능” 구현을 담당함.
: 웹 페이지를 불러올 때 HTML, CSS 요소들을 파싱함.
렌더링 엔진 → HTML, CSS를 파싱해서 화면 출력
자바스크립트 엔진 → JS 코드 실행, DOM/CSSOM 조작
: 자바스크립트 Node 객체들의 계층화된 트리임.
HTML과 동일하게 CSS를 컴퓨터가 연산할 수 있는 트리형태인 Object Model로 만드는 것
DOM과 CSSOM을 합쳐서 한꺼번에 같이 표현한 트리
DOM과 CSSOM은 모든 요소들의 구조와 텍스트가 다 포함되어있지만, Render Tree는 실제 화면에 표현되는 리소스들로만 노드들이 구성된다.
이제 렌더링 방식들에 대해 공부하기 위한 빌드업을 끝냈다. 다음 포스트에서 본격적으로 렌더링 방식에 대해 공부해보겠다.
https://opendeveloper.tistory.com/entry/FrontEnd-지식브라우저-렌더링-원리와-순서성능-최적화-고려사항