Sobes.tech
Middle

Kuo skiriasi <script>, <script async> ir <script defer> žymės?

sobes.tech AI

Atsakymas iš AI

Standartinis <script> žymeklis sustabdo HTML analizę, įkelia skriptą ir jį vykdo, tada analizė tęsiasi.

<script async> įkelia skriptą asinchroniškai, kol tęsiasi HTML analizė. Skriptas vykdomas iškart po įkėlimo. Vykdymo tvarka nėra garantuota.

<script defer> įkelia skriptą asinchroniškai, kol tęsiasi HTML analizė. Skriptas vykdomas tik po HTML analizės pabaigos, bet prieš DOMContentLoaded įvykį. defer sukelti skriptai vykdomi jų pasirodymo HTML faile tvarka.

Lyginamoji lentelė:

Ypatybė HTML analizė vyksta skripto įkėlimo metu Skripto vykdymas Vykdymo tvarkos išlaikymas
Nėra Sustabdo Iškart po įkėlimo Taip
async Tęsiasi Iškart po įkėlimo (gali nutraukti analizę) Ne
defer Tęsiasi Po HTML analizės pabaigos Taip

Pavyzdys:

<!-- Įprastas skriptas - blokuoja analizę -->
<script src="script1.js"></script>

<!-- Asinchroninis skriptas - neblokuoja analizės, vykdomas iškart po įkėlimo -->
<script src="script2.js" async></script>

<!-- Atidėtas skriptas - neblokuoja analizės, vykdomas po HTML analizės -->
<script src="script3.js" defer></script>
<script src="script4.js" defer></script> <!-- Bus vykdomas po script3.js -->