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

推薦する

Vue で className として空の文字列を使用することはなぜ推奨されないのですか?

目次空の文字列 '' と null を比較するケース1: 空の文字列を使用する &#...

USE DB 輻輳に対する MySQL ソリューションの詳細な説明

障害に遭遇すると、障害の根本的な原因を考えるのではなく、障害を解決する方法を考えることがよくあります...

Vue3はサイドナビゲーションテキストスケルトン効果コンポーネントをカプセル化します

Vue3プロジェクトのカプセル化サイドナビゲーションテキストスケルトン効果コンポーネント-グローバル...

中国の専門ではない:文化の違いの中でのウェブ開発

Web デザインと開発は大変な作業なので、少数の人だけを対象に設計しないでください。これは外国人が...

Bootstrap FileInputは画像アップロード機能を実装します

この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...

スクロールバーのスタイルを設定するための CSS サンプルコード

スクロール バーのスタイルを設定するための CSS 実装コードは次のとおりです。 •::-webki...

Docker が PostgreSQL を起動するときに複数のデータベースを作成するためのソリューション

1 はじめに「DockerでPostgreSQLを起動する方法といくつかの接続ツールのおすすめ」の記...

MySQL 5.7.15 のインストールと設定方法のグラフィック チュートリアル (Windows)

MySQL をインストールする必要があるため、インストール手順を以下のように記録します。 自分なり...

新しいカーネルをLinuxシステムに移植する手順

1. ubuntu16.04 イメージと対応する ubuntu16.04 カーネル バージョンのソー...

Mysql SQL ステートメント演習 (50 問)

テーブル名とフィールド–1. 学生リスト学生 (s_id、s_name、s_birth、s_sex)...

Dockerコンテナを停止または強制終了できない問題の解決策

Docker バージョン 1.13.1問題プロセス特定の環境のMySQLコンテナを停止、強制終了、ま...

MySQL統計テーブルのサイズを説明する例

各データベース内の各テーブルのサイズをカウントすることは、データ ガバナンスの最も単純な要件の 1 ...

DockerでMySQLコンテナを作成する簡単な手順

序文すでに Docker をインストールしており、Docker について簡単に理解しています。ここで...

モバイルデバイス上の 1px 境界線を解決する最善の方法 (推奨)

モバイル デバイス向けに開発する場合、Retina 画面上で要素の境界線が太くなるという問題に遭遇す...