Ինչու՞ սովորաբար սցենարները միանում են body թեգի վերջում:
sobes.tech AI
Պատասխան AI-ից
Որովհետև խուսափել էջի ռենդերի խոչընդոտից և ապահովել DOM տարրերին անմիջապես հասանելիությունը նրանց լիցքավորմանց հետո:
Երբ <head> կամ <body> սկզբում առանց async կամ defer հատկությունների միացված սցենարներ, բրաուզերը կանգնեցնում է HTML-ի վերլուծությունը և էջի ռենդերը մինչև այն ժամանակ, երբ սցենարը բեռնվի և կատարվի: Սա դանդաղեցնում է կայքի տեսանելի կատարողականությունը:
<body> վերջում միացումը ապահովում է, որ DOM ծառը արդեն ամբողջությամբ ձևավորվել է սցենարի կատարման պահին, ինչը թույլ է տալիս անմիջապես աշխատել տարրերի հետ առանց անհրաժեշտության օգտագործել DOMContentLoaded կամ load իրադարձությունների հենակետերը միայն տարրերին հասանելիության համար:
async և defer հատկությունները ժամանակակից այլընտրանքներ են, որոնք առաջարկում են ավելի ճկուն տարբերակներ սցենարների բեռնումը HTML վերլուծությունը չխոչընդոտելու համար:
async: Սցենարը բեռնվում է ասինխրոն և անմիջապես կատարվում է բեռնվելուց հետո, առանց սպասելու DOM-ի ամբողջական բեռնումին: Ասինխրոն սցենարների կատարման կարգը չի երաշխավորվում:defer: Սցենարը բեռնվում է ասինխրոն և կատարվում է HTML-ի ամբողջական վերլուծումից հետո, բայց նախքանDOMContentLoadedիրադարձությունը:defer-ով բեռնված սցենարները կատարվում են ըստ իրենց հայտնվելու կարգի փաստաթղթում։