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 操作要素の例

操作要素の詳細については、前回の記事を参照してください。JavaScript WebAPI、DOM、...

TypeScript 列挙型

目次1. 概要2. デジタル列挙2.1 逆マッピング3. 文字列の列挙4. const列挙5. まと...

VUEをベースにしたシンプルな学生情報管理システムの実装

目次1. 主な機能2. 実装のアイデア3. コードの実装4. エフェクト表示V. 結論1. 主な機能...

Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...

タイムライン効果を実現するCSS3

最近、コンピューターの電源を入れたところ、Geek Academy が新規ユーザーに 1 か月の無料...

DQL コマンドを使用して MySQL でデータをクエリする方法

この記事では、MySQL でよく使用されるデータ クエリ言語について説明します。 DQL (データク...

div要素に丸い境界線を追加する方法

以下のように表示されます。 CSSコードコンテンツをクリップボードにコピー分割{境界線: 2px 固...

自動ウェブページ更新と自動ジャンプのサンプルコード

ウェブページの自動更新: <head></head> の間に次のコードを追加...

LeetCode の SQL 実装 (177. 給与が N 番目に高い)

[LeetCode] 177. 最も高い給与従業員テーブルからn番目に高い給与を取得する SQL ...

Linux のファイル権限とグループ変更コマンドの詳細な説明

Linux では、すべてがファイルであり (ディレクトリもファイルです)、各ファイルにはユーザーに対...

HTML テーブル マークアップ チュートリアル (5): ライト ボーダー カラー属性 BORDERCOLORLIGHT

表では、左上の境界線の色を個別に定義したり、セルの右下の境界線の色を定義したりできます。これら 2 ...

MySQLオンラインDDLの使用に関する詳細な説明

目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...

ウェブページからテキスト透かしを削除する2つの簡単な方法

<br /> 特定の Web サイトを閲覧して、優れた Web ページを見つけた場合、そ...

Vue+flaskで動画合成機能を実現(ドラッグ&ドロップアップロード)

目次ドラッグアンドドロップアップロードについては以前の記事で書きました。ファイルをアップロードするF...

VMware15.5 インストール Ubuntu20.04 グラフィック チュートリアル

1. インストール前の準備1. 公式ウェブサイトからUbuntu 20.04のイメージファイルを直接...