웹 페이지 렌더링 메커니즘
한 웹 페이지에는 주로 세 개의 큰 덩어리, Html/CSS/JavaScript가 포함되어 있다.
하나.먼저 몇 가지 개념을 말하다.
1. DOM: Document Object Model DOM: 브라우저는 HTML을 트리 형식의 데이터 구조로 해석하여 DOM이라고 부른다.
2. CSSOM: CSS Object Model, 브라우저는 CSS 코드를 트리 데이터 구조로 해석합니다.
3. Render Tree: DOM 트리와 CSSOM 트리가 연결되어 생성됩니다(렌더 트리라고도 함).
3. Layout: Render Tree 각 노드의 특정 위치를 계산합니다.
4. Painting: 그래픽을 통해 Layout 뒤의 노드 내용을 각각 화면에 표시합니다.
둘.브라우저 렌더링 프로세스
1. Create/Update DOM And request css/image/js: 브라우저가 HTML 코드를 요청한 후 DOM을 생성하는 첫 번째 단계(Bytes→characters 후)에서 css, 그림, js 요청을 병행하여 시작합니다. 그들이 HEAD에 있든 없든.
2. Create/Update Render CSSOM: CSS 파일 다운로드가 완료되어 CSSOM 구축이 시작됩니다.
3. Create/Update Render Tree: 모든 CSS 파일 다운로드가 완료되고 CSSOM 구축이 끝난 후 DOM과 함께 Render Tree를 생성합니다. Render Tree는 모든 보이는 DOM 내용을 설명하고 CSSOM 스타일 정보를 노드에 추가합니다.
렌더링 트리를 형성하기 위해 브라우저가 하는 작업은 다음과 같습니다.
(1) DOM 트리 루트 노드에서 시작하여 표시되는 각 노드를 이동합니다.
(2) 보이는 모든 노드에 적합한 일치하는 CSSOM 규칙을 찾고 스타일을 적용한다
(3) 가시 노드를 표시합니다(노드는 내용과 계산된 스타일을 포함합니다).
4.Layout: Render Tree가 있으면 브라우저는 웹 페이지에 어떤 노드, 각 노드의 CSS 정의와 그들의 종속 관계를 알 수 있습니다.Layout, 말 그대로 각 노드가 화면에 있는 위치를 계산하는 것이다.
5. Painting: Layout 이후 브라우저는 어떤 노드가 표시될 것인지(which nodes are visible), 각 노드의 CSS 속성이 무엇인지(their computed styles), 각 노드가 화면에 있는 위치가 어디인지(geometry)를 알고 있습니다.마지막 단계에 들어간다. 페인팅은 계산된 규칙에 따라 그래픽카드를 통해 내용을 화면에 그린다.
셋.CSS 및 JavaScript 기능:
1. CSS 동시 로드: 브라우저 해석 http response 다운로드 html 파일은 위에서 아래로 로드되며 로드 과정에서 해석 렌더링이 진행됩니다. 로드 과정에서 외부 css 파일을 만나면 브라우저가 css 파일을 가져오는 요청을 따로 보냅니다. 여기서 css 해석은 rule tree(규정 트리)를 생성하고 나중에 업데이트됩니다.
2.JavaScript는 단독으로만 불러올 수 있습니다. 문서를 불러오는 과정에서 js 파일을 만나면 html 문서는 렌더링(불러오기 해석 렌더링 동기화)의 라인을 끊습니다. 문서에서 js 파일이 불러오기를 기다릴 뿐만 아니라 해석이 실행되기를 기다려야 html 문서의 렌더링 라인을 복구할 수 있습니다.
넷.JavaScript의 형식은 무엇입니까?
Html 내장
...
주의: 페이지 렌더링 원리와 자바스크립트가 단독으로 불러오는 특성에 따라 상기 두 가지 형식은 모두 탭 안에서 닫힌 탭에 가까운 곳에 두어야 한다(head 내의 js는 페이지 내용의 표현과 렌더링을 막고 뒷부분의 다운로드를 막아'화이트 스크린'현상을 초래할 수 있다)
오.비동기 로드
1. async, 후속 문서 요소를 불러오고 렌더링하는 과정과script.js의 불러오기와 실행을 병행합니다. (비동기)
2. defer, 후속 문서 요소를 불러오는 과정과script.js의 불러오기는 병렬 (비동기) 이지만,script.js의 실행은 모든 요소 해석이 끝난 후에 DOMContentLoaded 이벤트가 터치되기 전에 완료됩니다.
defer와 async 역할: 페이지가 다른 사이트 코드를 도입하고 도입한 코드는 현재 페이지의 표현에 영향을 주지 않습니다.
주의: defer: 스크립트는 문서의 해석과 표시로 지연되며 순서가 있습니다.async: 순서를 보장하지 않습니다.
本文配图及部分内容来自于饥人谷,版权归饥人谷_海瀚和饥人谷所有,转载需说明来源
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.