📍 주소창에 https://www.naver.com 혹은 https://www.youtube.com 등 다양한 URL을 검색하면 보이는 그 페이지! 어떤 원리로 웹페이지가 우리에게 보이게 되는지 동작원리를 알아보겠습니다.
동기적(Synchronous)으로 HTML,CSS,JS 언어를 해석하여 내용을 화면에 보여주는 응용 소프트웨어임.
브라우저가 웹 서버에 필요한 자원을 요청(웹 페이지를 요청한다)하면, 서버는 응답해주고 그것을 받은 브라우저가 해석하여 클라이언트에게 보여준다. 웹페이지의 형태는 HTML, PDF, 이미지등 다양하다.
즉, HTML, CSS명세에 따라 HTML 파일을 해석해서 표시함 (*명세 : W3C(World wide web Consortium) 기준)
종류 : Chrome, 네이버 웨일, 사파리, 파이어폭스 등
각 브라우저마다 렌더링 엔진이 다르기 때문에 같은 페이지도 다르게 보이는 경우가 있다.
- Blink : 구글이 Webkit을 대체하기 위해 자체적으로 개발한 엔진
- Webkit : 최초 리눅스 플랫폼에 동작하기 위한 오픈소스 엔진 (애플이 맥과 윈도우에서 사파리 브라우저를 지원하기 위해 수정을 더했음)
📢 : 일련의 과정들이 비동기적으로 진행됩니다. (사용자에게 더 빠르게 내용을 표시하기 위해). HTML을 파싱할 때까지 기다리지 않고 렌더 트리 배치와 렌더 그리기 과정을 시작합니다.
지금까지는 HTML, CSS를 렌더링 엔진에서 처리하는 과정을 알아보았습니다. JS는 어떻게 처리될까요? JS는 자바스크립트 엔진에서 처리됩니다.
<script>
태그를 만나면 JS코드를 실행하기 위해 DOM 생성 프로세스를 중지함.<script>
태그 내의 코드 또는 src
속성에 정의된 자바스크립트 파일을 로드하고 파싱하여 실행함.🔎 우리가 JS코드를 HTML파일
<body>
하단에 위치시키는 이유는?
: 자바스크립트 엔진에 제어 권한이 있을 때 DOM트리를 조작하게 된다면 에러가 발생한다. 이러한 에러를 방지하기 위해 하단에 위치시킨다.
주소창에 www.naver.com을 입력하고 enter를 누르면 서버에 요청이 전송됨
해당 페이지에 존재하는 여러 자원들(텍스트, 이미지 등)이 전송됨
브라우저는 해당 자원이 담긴 HTML과 스타일이 담긴 CSS를 W3C명세에 따라 해석함 (렌더링엔진의 역할)
렌더링 엔진에서는 DOM트리와 CSS 스타일 구조체를 연결하여 렌더 트리를 만듬.
화면에 배치를 시작하고 UI백엔드가 노드를 돌며 형상을 그리기 시작함.
빠른 브라우저 화면 표시를 위하여 배치, 그리는 과정은 자원을 전송 받음과 동시에 일부분 먼저 진행하고 화면에 표시됨.