HTML5 の script 要素の async と defer の使い分けについて
読了まで:約1分
今日なんとなく
HTML5 の script の要素の async
と defer
の違い
async
とdefer
のHTML5 のasync
属性とdefer
属性は、
src
属性で指定された スクリプトを 非同期で 読み込む
と
async
は非同期 読み込みで 実行順序が 保証されず load
の後に 呼ばれる defer
は非同期 読み込みだが 実行順序は 保証され DOMContnetLoaded
の直前に 呼ばれる
と
この
二つは 読み込むスクリプトの 種別に よって 使い分ける 必要が 有る
と
HTML5 の script 要素の async
と defer
の使い分け
async
とdefer
の基本的に、
defer
で読み込まれた スクリプトは DOMContentLoaded
イベントの直前には 呼ばれる
と
- HTML の
DOM に 依存する スクリプトは defer
属性 - HTML の
DOM には 依存しないが HTML から 読み込む 必要が ある スクリプトは async
属性
と
そのため、
JSX を
使って HTML の DOM 上で UI を 構成する スクリプト (React や Vue 、 Angular など)
はdefer
属性を
DOM を
必要と しない、 純粋な Web Worker などの 為の スクリプト
のasync
属性を
まとめ
この
DOM を
触るなら defer
属性を使い、 DOM が まったく 関係しないなら async
属性を使う
と
ただ、とはasync
属性はasync
属性を
(純粋な)
Web Workers とか Web Notifications 関連など
の、
ただし defer
もasync
も