webpackの遅延読み込みとプリロードの詳細な説明

webpackの遅延読み込みとプリロードの詳細な説明

通常の読み込み

見やすくするために、index.jsのコードは非常にシンプルです

console.log('index.js が実行されました')
'./test.js' から { test } をインポートします。
document.getElementById('btn-wrap').onclick = 関数 () {
    テスト()
}

test.js

console.log('test.js が実行されました')
エクスポート関数test() {
    定数値 = 'hello world'
    console.log('テスト値: ', 値)
}

index.htmlにボタンを追加する

    <button id='btn-wrap'>クリック</button>

webpack コマンドを実行します。

ボタンがクリックされていないときに test.js が読み込まれていることがわかります。 test.js が大きい場合、それをロードするとパフォーマンスが低下します。必要なときにロードできるようにしたいと考えています。

遅延読み込み

index.jsのコードを修正する

console.log('index.js が実行されました')
// './test.js' から { test } をインポートします
// document.getElementById('btn-wrap').onclick = function () {
//テスト()
// }
document.getElementById('btn-wrap').onclick = 関数 () {
    console.log('==== ボタンをクリックしてください')
    インポート(/*webpackChunkName:'test' */"./test")
        .then(({テスト}) => {
            console.log('テストが正常にロードされました')
            テスト()
        })
        .catch(エラー => {
            console.log('テストの読み込みに失敗しましたエラー:', error)
        })
}

webpackコマンドを再度実行し、ブラウザでログを表示します。

ボタンをクリックする前にindex.jsのみが読み込まれます

ボタンをクリックして下さい:

ボタンをクリックするとtest.jsが実行されていることがわかります。

プリロード

遅延読み込みは、js ファイルのオンデマンド読み込みを実装します。つまり、必要なときにのみ js ファイルが読み込まれます。ただし、js ファイルが非常に大きく読み込みが遅い場合は、使用中に読み込むとページがフリーズします。この問題を最適化するには、最初にプリフェッチを使用してプリロードすることができます。

プリロードを使用しない

ボタンがクリックされるまで test.js ファイルは読み込まれません

test.jsファイルはボタンをクリックした後にのみ読み込まれます

プリロードの使用

プリロードを使用するにはwebpackPrefetch:trueを設定します

document.getElementById('btn-wrap').onclick = 関数 () {
    console.log('==== ボタンをクリックしてください')
    インポート(/*webpackChunkName:'test'、webpackPrefetch:true*/"./test")
        .then(({テスト}) => {
            console.log('テストが正常にロードされました')
            テスト()
        })
        .catch(エラー => {
            console.log('テストの読み込みに失敗しましたエラー:', error)
        })
}

ボタンをクリックする前に、test.js ファイルがプリロードされます。

ボタンをクリックして下さい:

要約する

通常の読み込み: 多くのリソースが並行して読み込まれ、複数のファイルが同時に読み込まれます

遅延読み込み: 必要なときだけ読み込む

プリロード: 他のリソースがロードされ、ブラウザがアイドル状態になるまで待機し、プリロードするように設定されたリソースを秘密裏にロードします。

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue+webpack は遅延読み込みプロセス分析を実装します
  • Webpack4 SCSS 抽出と遅延読み込みの例
  • webpack + react + react-router が遅延読み込みを実装する方法の詳細な説明
  • 画像のプリロードと遅延ロードを実装するJavaScript
  • js での遅延読み込みとプリロードの具体的な使用法
  • JS画像プリロードプラグインの詳しい説明

<<:  ウェブデザインの発展と西洋建築の類似点は何でしょうか?

>>:  Ubuntu 18.04 で apt ソースを Alibaba Cloud ソースに変更する詳細なプロセス

推薦する

画像の半透明処理 画像と半透明の背景の実装のアイデアとコード

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

vuex データの永続化のための 2 つの実装ソリューション

目次ビジネス要件:解決策 1: vuex-persistedstate解決策2: vuex-pers...

写真をアップロードして顔を認識する Vue+axios サンプルコード

目次Axios リクエストQs処理データ分析Vantアップロードファイル形式完全なコードこの記事では...

Dockerでudpポート番号を指定する問題を解決する

Docker はコンテナを起動するときにアクセス ポートを指定します。複数の -p オプションを使用...

OEL7.6 ソースコードから MYSQL5.7 をインストールするチュートリアル

まず、公式サイト https://dev.mysql.com/downloads/mysql/5.7...

CSS 命名: BEM、スコープ付き CSS、CSS モジュール、CSS-in-JS の説明

CSS の適用範囲はグローバルです。プロジェクトがどんどん大きくなり、参加する人が増えるにつれて、命...

ウェブページのメモリとCPU使用量を削減する方法

<br />Web ページによっては、サイズは大きくないように見えても開くのに非常に時間...

CSS3 Flex エラスティックレイアウトのサンプルコードの詳細な説明

1. 基本概念 //任意のコンテナを Flex レイアウトとして指定できます。 。箱{ ディスプレイ...

MySQL データベースの最適化: テーブルとデータベースのシャーディング操作の詳細な説明

この記事では、例を使用して、MySQL データベースの最適化のためのテーブルおよびデータベース シャ...

JS ES6 スプレッド演算子の魔法のような使い方

目次1. 属性を追加する2. 複数のオブジェクトを結合する3. オブジェクトのプロパティを削除する4...

JSはビデオの再生速度を制御するための簡単なサンプルコードを実装します

導入以前、ある問題に気づきました。学習ビデオを視聴しているとき、動きが遅すぎる、先生が黒板に書くのに...

MySQLインデックスマージの使い方

インデックスのマージは、MySQL が最下層で提供するインテリジェントなアルゴリズムです。インデック...

Word のコンテンツを Web サイトのエディターに直接コピーすることはお勧めしません。

<br />質問: Word のコンテンツを Web サイトのエディターに直接コピーする...

ネイティブJSでマウススライドによる愛の拡散効果を実現

この記事では、マウスをスライドすると愛が広がる js 特殊効果を紹介します。効果は次のとおりです。 ...

ESXI の仮想マシンにワークステーションをインストールするときに発生するネットワーク障害の解決策

問題の説明ESXI で Windows にワークステーションをインストールした後、内部の仮想マシンは...