Middle
Ի՞նչ է տարբերությունը <script> թեգի ռեժիմների (async, defer կամ type) աշխատանքի մեջ։
sobes.tech AI
Պատասխան AI-ից
<script> առանցատրիբուտ
- HTML վերլուծվում է մինչև
<script>թեգը: - HTML վերլուծումը դադարեցվում է
<script>թեգի հայտնաբերման ժամանակ: - Սկրիպտը բեռնվում է:
- Սկրիպտը կատարվում է:
- HTML վերլուծումը շարունակվում է սկրիպտի կատարման հետո:
<script async>
- HTML-ը վերլուծվում է միաժամանակ սկրիպտի բեռնման հետ:
- HTML վերլուծումը դադարեցվում է սկրիպտի բեռնման ավարտից հետո:
- Սկրիպտը կատարվում է:
- HTML վերլուծումը շարունակվում է սկրիպտի կատարման հետո:
async-ով սկրիպտների կատարման կարգը չի երաշխավորվում, կախված է բեռնման արագությունից:
<script defer>
- HTML-ը վերլուծվում է միաժամանակ սկրիպտի բեռնման հետ:
- Սկրիպտը կատարվում է HTML վերլուծումից հետո, բայց նախքան
DOMContentLoadedիրադարձությունը: defer-ով սկրիպտների կատարման կարգը երաշխավորվում է, համապատասխանում է HTML-ում նրանց դիրքին:- վարքը նման է
<script>-ի, որը տեղադրված է</body>փակող թեգից առաջ:
<script type="module"> (ECMAScript մոդուլների համար)
- Հաշվարկվում է որպես
<script defer>ըստ նախնական կարգավորման (կարգավորված կատարմամբ վերլուծությունից հետո, կարգը պահպանելով): - Կարող է օգտագործվել
async-ի հետ: - Պատրաստված է մոդուլների ներմուծում/արտահանման համար, ստեղծում է առանձին տեսադաշտ (scope):
| Ատրիբուտ | Բեռնման կարգը | Կատարման կարգը | HTML վերլուծության խոչընդոտում | Կարգը պահպանվում է |
|---|---|---|---|---|
| Ոչ | Բլոկավորող | Բլոկավորող | Այո | Պահպանվում է |
async |
Անբլոկավոր (պարալել) | Անբլոկավոր (բեռնման ավարտից հետո) | Ոչ | Գործողությունը չի երաշխավորվում |
defer |
Անբլոկավոր (պարալել) | Անբլոկավոր (HTML վերլուծությունից հետո) | Ոչ | Պահպանվում է |
type="module" |
Անբլոկավոր (պարալել) | Անբլոկավոր (HTML վերլուծությունից հետո, ըստ նախնական կարգի) | Ոչ | Պահպանվում է (նախնական կարգով) |
// Օրինակ պարզ սկրիպտ
console.log('Պարզ սկրիպտ');
// Օրինակ ասինխրոն սկրիպտ
console.log('Ասինխրոն սկրիպտ');
// Օրինակ հետաձգված սկրիպտ
console.log('Հետաձգված սկրիպտ');
// Օրինակ մոդուլ
import { someFunction } from './module.js';
someFunction();
console.log('Մոդուլ սկրիպտ');