Middle
<script> etiketinin modlarının (async, defer və ya type) işləməsində fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
<script> atributu olmadan
- HTML
<script>etiketi ilə analiz edilir. <script>etiketi aşkarlandıqda HTML analizi dayandırılır.- Skript yüklənir.
- Skript icra olunur.
- Skript icra edildikdən sonra HTML analizi davam edir.
<script async>
- HTML, skriptin yüklənməsi ilə eyni vaxtda analiz edilir.
- Skriptin yüklənməsi tamamlandıqda HTML analizi dayandırılır.
- Skript icra olunur.
- Skript icra edildikdən sonra HTML analizi davam edir.
asyncilə skriptlərin icra sırası təmin edilmir, yükləmə sürətindən asılıdır.
<script defer>
- HTML, skriptin yüklənməsi ilə eyni vaxtda analiz edilir.
- Skript HTML analizi tamamlandıqdan sonra, lakin
DOMContentLoadedhadisəsindən əvvəl icra olunur. deferilə skriptlərin icra sırası təmin edilir, HTML-dəki sırasına uyğun olur.- Davranış
</body>bağlanış teqi əvvəl yerləşdirilmiş<script>-ə bənzəyir.
<script type="module"> (ECMAScript modulları üçün)
- Standart olaraq
<script defer>kimi işlənir (gecikdirilmiş icra, sıralama qorunur). asyncatributu ilə istifadə edilə bilər.- Modulları import/export etməyə dəstək verir. Ayrı scope (sahə) yaradır.
| Atribut | Skriptin yüklənməsi | Skriptin icrası | HTML analizi bloklanması | İcra sırası |
|---|---|---|---|---|
| Yox | Bloklayıcı | Bloklayıcı | Bəli | Saxlanılır |
async |
Bloklamayan (paralel) | Bloklamayan (yükləmə tamamlandıqda) | Xeyr | Garanli deyil |
defer |
Bloklamayan (paralel) | Bloklamayan (HTML analizindən sonra) | Xeyr | Saxlanılır |
type="module" |
Bloklamayan (paralel) | Bloklamayan (HTML analizindən sonra, standart) | Xeyr | Saxlanılır (standart) |
// Sadə skript nümunəsi
console.log('Normal skript');
// Asinxron skript nümunəsi
console.log('Asinxron skript');
// Gecikdirilmiş skript nümunəsi
console.log('Gecikdirilmiş skript');
// Modul nümunəsi
import { someFunction } from './module.js';
someFunction();
console.log('Modul skripti');