Middle
Ինչպե՞ս է բրաուզերը մշակում վեբ էջը։
sobes.tech AI
Պատասխան AI-ից
Վեբ էջի մշակման գործընթացը բրաուզերի կողմից կարող է բաժանվել մի քանի փուլերի.
-
Հարցում և ռեսուրսի ստացում:
- Օգտատերը մուտքագրում է URL հասցեն հասցեային տողում կամ սեղմում է հղման վրա:
- Բրաուզերը ուղարկում է HTTP հարցում սերվերին:
- Սերվերը մշակում է հարցումը և ուղարկում պատասխան, որը սովորաբար պարունակում է HTML փաստաթուղթ:
-
**Սինտաքսական վերլուծություն (Parsing):
- Բրաուզերը ստանում է HTML փաստաթուղթը բայթերի տեսքով:
- Այս բայթերը դեկոդավորվում են նշված կոդավորմամբ նշանների:
- HTML վերլուծիչը վերլուծում է փաստաթուղթը նշան առ նշան և կառուցում DOM (Document Object Model) ծառը:
- Երբ հայտնաբերում է
<link>(CSS-ի համար) կամ<script>(JavaScript-ի համար) տեգերը, բրաուզերը սկսում է այդ ռեսուրսների ներբեռնումը միաժամանակ HTML վերլուծության հետ:
-
**CSSOM-ի կառուցում:
- CSS վերլուծիչը վերլուծում է
<style>տեգերից,<link>տեգերից և inline ոճերից CSS կանոնները: - Այս կանոնների հիման վրա կառուցվում է CSSOM (CSS Object Model) ծառը, որը պարունակում է բոլոր ոճերը յուրաքանչյուր տարրին էջում:
- CSS վերլուծիչը վերլուծում է
-
**Render ծառի կառուցում:
- Render Tree-ն միավորում է DOM-ը և CSSOM-ը:
- Այն պարունակում է միայն այն տարրերը, որոնք ցուցադրվելու են էջում, և նրանց համապատասխան ոճերը:
<style>տեգումdisplay: none;կանոնով նշված տարրերը չեն ներառվում Render Tree-ում:
-
**Տարրերի դասավորություն (Layout / Reflow):
- Բրաուզերը հաշվարկում է յուրաքանչյուր տարրի ճշգրիտ չափերը և դիրքը Render Tree-ի հիման վրա:
- Այս գործընթացը կոչվում է Layout կամ Reflow:
- Layout-ը կատարվում է առաջին անգամ Render Tree-ի կառուցումից հետո, ինչպես նաև երբ փոփոխվում է պատուհանի չափը, ավելացվում կամ հեռացվում են տարրեր, կամ փոփոխվում են նրանց ոճերը:
-
**Նկարագրություն (Painting / Repaint):
- Բրաուզերը նկարում է յուրաքանչյուր տարր էկրանին՝ օգտագործելով Render Tree-ից և Layout քայլի արդյունքներից:
- Նկարագրությունը կարող է տեղի ունենալ նաև այն ժամանակ, երբ փոփոխվում են տարրի տեսանելի հատկությունները՝ գույն, ֆոն, թափանցիկություն, առանց նրա գեոմետրիայի փոփոխության:
-
**Կոմպոզիցիա:
- Նկարագրված տարրերը կարող են միավորվել տարբեր շերտերում՝ օպտիմալացման և անիմացիաների համար:
- Այս շերտերը միավորվում են վերջնական էջը ցուցադրելու համար:
-
**Սկրիպտների կատարմամբ:
- Երբ HTML վերլուծիչը հասնում է
<script>տեգին, HTML վերլուծումը ժամանակավորապես կանգնեցնում է (համաձայն ստանդարտի), և բրաուզերը ներբեռնում, վերլուծում և executes JavaScript կոդը: - JavaScript-ը կարող է փոփոխել DOM և CSSOM, ինչը կարող է կրկնել Layout և Painting քայլերը:
<script>տեգիasyncևdeferհատկանիշները ազդում են սցրիպտների կատարման կարգի և ժամանակի վրա՝ թույլ տալով HTML վերլուծության շարունակությունը:
- Երբ HTML վերլուծիչը հասնում է
Ահա այս գործընթացի մոտավոր վիզուալիզացիան:
HTTP Հարցում
↓
HTML բայթեր
↓
HTML վերլուծիչ
→ CSS վերլուծիչ (համաժամ)
↓ ↓
DOM ծառ CSSOM ծառ
↓
Render ծառ
↓
Layout
↓
Նկարագրություն
↓
Կոմպոզիցիա
↓
Էկրան
JavaScript-ի կատարմամբ կարող է միջամտել տարբեր փուլերում՝ կրկնօրինակում քայլերը:
HTML վերլուծիչ + `<script>` տեգ
↓
HTML վերլուծումը դադարեցվում է
↓
Սկրիպտ ներբեռնում
↓
Սկրիպտ վերլուծում
↓
Սկրիպտ կատարում
↓
(Հնարավոր է DOM/CSSOM փոփոխություն → Կատարվում է Layout/Repaint)
↓
HTML վերլուծության շարունակություն
Այս գործընթացի ըմբռնումը կարևոր է վեբ էջերի կատարողականությունը օպտիմալացնելու համար։