TIL 01-script asyncとdefer



スクリプトasyncとdefer


head + script

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="index.js"></script>
</head>

✓進行方式

  • htmlファイルを行ごとに読み出し、cssとマージしdom要素
  • に変換する.
  • scriptタグに遭遇した場合は、読み取りとインデックスを停止します.js
  • をダウンロードして実行
  • すべてのスクリプトのダウンロードが完了しました->実行後、html
  • を再解析します.
    短所
    jsファイルが大きい場合やネットワーク速度が遅い場合は速度が遅い

    body + script

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div>content</div>
        <script src="index.js"></script>
    </body>
    </html>

    ✓進行方式

  • htmlファイルを行ごとに読み出し、cssとマージしdom要素
  • に変換する.
  • bodyに解析し、js DownDor->
  • を実行します.
    短所
    ウェブサイトがjsに依存すると,ユーザは意味のあるコンテンツを見ることができない.

    head + asyn

    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script asyn src="index.js"></script>
    </head>

    ✓進行方式

  • htmlファイルを行ごとに読み出し、cssとマージしdom要素
  • に変換する.
  • scriptタグに遭遇した場合、コマンドはjs
  • をダウンロードします.
  • 解析を続ける
  • jsダウンタイム時に解析を停止して実行
    **パラレル要素は、ページ全体のダウンロード時間を短縮します.
    短所
    jsはまず閉じますので、queryselectorなどの未定義のjsがある場合があります.まず、jsはダウンタイムの順に動作するので、順序依存のjsがあるとエラーが発生します

    👍🏻 head + defer

    <head>
            <meta charset="UTF-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
            <script defer src="index.js"></script>
        </head>

    ✓進行方式

  • htmlファイルを行ごとに読み出し、cssとマージしdom要素
  • に変換する.
  • scriptタグに遭遇した場合、コマンドはjs
  • をダウンロードします.
  • すべての解析を続行
  • すべての解析が完了すると、jsの
  • が順次実行される.
    最良の方法はhead+deferの組合せである.
    asynは前にjsを学んだことがあって、asyn/awaitで学んだことがあって、とても喜んであなたに会って、ほほほ
    会社は新しいプロジェクトを始めるたびに、あるいは新しいapiを使うたびに、インポートを行います.今日初めてasynとdeferを使うことを知りました.😿
    今日はまた私がどんなに井戸の中の蛙なのかを感じました呜呜...💪🏻