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 ソースに変更する詳細なプロセス

推薦する

JavaScript のフラット配列をツリー構造に変換する例

目次バックグラウンドで10,000個のデータが失われた再帰法非再帰的方法要約するバックグラウンドで1...

MySQL DATE_FORMAT関数の使用

タオバオが、ダブル11に最も多くの注文をした2人のユーザー、ユーザー1:「ショッピングの皇帝、陳哈哈...

Javascript の基礎: 演算子とフロー制御の詳細な説明

目次1. オペレーター1.1 算術演算子1.2 インクリメント演算子とデクリメント演算子1.3 比較...

resizeを使用して画像切り替えプレビュー機能を実装する方法

要点CSS resize プロパティを使用すると、要素のサイズ変更可能性を制御できます。サイズ変更を...

VUEはトークンログイン認証を実装

この記事では、トークンログイン認証を実装するためのVUEの具体的なコードを例として紹介します。具体的...

iframe の多層ネスト、無制限のネスト、高度に適応したソリューション

ページ A、B、C の 3 つがあります。ページ A にはページ B が含まれ、ページ B にはペー...

js で 0ms 遅延タイマーを実装するいくつかの方法

目次キューマイクロタスク非同期/待機メッセージチャネルやっと付録ここ二日間、「タイムリーな setT...

MySQLでテーブル名を変更する方法と注意すべき点

目次1. テーブル名を変更する方法2. 注記要約: 1. テーブル名を変更する方法RENAME TA...

MySQLデータ復旧のさまざまな方法の概要

目次1. はじめに2. 直接回復2.1 mysqldumpバックアップの完全リカバリ2.2 xtra...

innodb_autoinc_lock_mode の表現と値の選択方法についての簡単な説明

前提条件: Percona 5.6 バージョン、トランザクション分離レベルは RR mysql>...

MySql データベースにおける単一テーブル クエリと複数テーブル結合クエリの効率の比較

この間、プロジェクトに取り組んでいるときに、データ間の接続が非常に複雑なモジュールに遭遇しました。テ...

mysql 簡単な操作例を表示

この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...

Dockerボリュームマウントの実装方法

最も単純な hello world 出力イメージを作成することは最も簡単なスタートですが、実行中のコ...

Vue Element フロントエンドアプリケーション開発のための従来の JS 処理機能

目次1. 従来のコレクションに対するフィルター、マップ、および削減処理方法2. 再帰処理3. for...

MySQL の一般的な問題とアプリケーション スキルの概要

序文MySQL の日常的な開発やメンテナンスでは、パスワードの紛失やテーブルの破損など、避けられない...