Detaillierte Erläuterung des Lazy Loading und Preloading von Webpack

Detaillierte Erläuterung des Lazy Loading und Preloading von Webpack

Normale Belastung

Der Code in index.js ist sehr einfach gehalten, um die Anzeige zu vereinfachen.

console.log('index.js wird ausgeführt')
importiere { test } aus './test.js'
document.getElementById('btn-wrap').onclick = Funktion () {
    prüfen()
}

test.js

console.log('test.js ausgeführt')
Exportfunktion test() {
    Konstantenwert = "Hallo Welt"
    console.log('Testwert: ', Wert)
}

Fügen Sie in index.html eine Schaltfläche hinzu

    <button id='btn-wrap'>Klick</button>

Führen Sie den Webpack-Befehl aus:

Sie können sehen, dass test.js geladen wird, wenn die Schaltfläche nicht angeklickt wird. Wenn test.js groß ist, beeinträchtigt das Laden die Leistung. Wir hoffen, es laden zu können, wenn wir es brauchen.

Lazy Loading

Ändern Sie den Code in index.js

console.log('index.js wird ausgeführt')
// importiere { test } aus './test.js'
// Dokument.getElementById('btn-wrap').onclick = Funktion () {
//prüfen()
// }
document.getElementById('btn-wrap').onclick = Funktion () {
    console.log('==== Klicken Sie auf die Schaltfläche')
    importiere(/*webpackChunkName:'test' */"./test")
        .then(({test}) => {
            console.log('Test erfolgreich geladen')
            prüfen()
        })
        .catch(Fehler => {
            console.log('Fehler beim Laden des Tests fehlgeschlagen:', Fehler)
        })
}

Führen Sie den Webpack-Befehl erneut aus und zeigen Sie das Protokoll im Browser an

Vor dem Klicken auf die Schaltfläche wird nur index.js geladen

Klicken Sie auf die Schaltfläche:

Sie können sehen, dass test.js nach dem Klicken auf die Schaltfläche ausgeführt wird.

Vorladen

Lazy Loading implementiert das Laden von JS-Dateien bei Bedarf, d. h. sie werden nur geladen, wenn sie benötigt werden. Wenn die JS-Datei jedoch sehr groß ist und langsam geladen wird, führt das Laden während der Verwendung zum Einfrieren der Seite. Um dieses Problem zu optimieren, können Sie zunächst mit Prefetch vorladen.

Kein Vorladen verwenden

Die Datei test.js wird erst geladen, wenn auf die Schaltfläche geklickt wird

Die Datei test.js wird erst geladen, wenn Sie auf die Schaltfläche klicken

Verwenden von Preload

Setzen Sie webpackPrefetch:true , um das Vorladen zu verwenden

document.getElementById('btn-wrap').onclick = Funktion () {
    console.log('==== Klicken Sie auf die Schaltfläche')
    importiere(/*webpackChunkName:'test' ,webpackPrefetch:true*/"./test")
        .then(({test}) => {
            console.log('Test erfolgreich geladen')
            prüfen()
        })
        .catch(Fehler => {
            console.log('Fehler beim Laden des Tests fehlgeschlagen:', Fehler)
        })
}

Vor dem Klicken auf die Schaltfläche wird die Datei test.js vorgeladen:

Klicken Sie auf die Schaltfläche:

Zusammenfassen

Normales Laden : Viele Ressourcen werden parallel geladen und mehrere Dateien werden gleichzeitig geladen

Lazy Loading : Laden nur bei Bedarf

Vorladen : Warten Sie, bis andere Ressourcen geladen sind und der Browser inaktiv ist, und laden Sie dann heimlich die Ressourcen, die vorgeladen werden sollen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können!

Das könnte Sie auch interessieren:
  • Vue + Webpack implementiert eine Lazy-Loading-Prozessanalyse
  • Webpack4 SCSS-Extraktion und Lazy Loading-Beispiel
  • Detaillierte Erklärung, wie Webpack + React + React-Router Lazy Loading implementieren
  • JavaScript zum Implementieren des Vorladens und verzögerten Ladens von Bildern
  • Spezifische Verwendung von Lazy Loading und Preloading in js
  • Detaillierte Erläuterung des JS-Bildvorlade-Plugins

<<:  Welche Ähnlichkeiten gibt es zwischen der Entwicklung des Webdesigns und der westlichen Architektur?

>>:  Detaillierter Prozess zum Ändern der Apt-Quelle in die Alibaba Cloud-Quelle in Ubuntu 18.04

Artikel empfehlen

Detaillierte Erläuterung des MySQL-Isolationsebenen-Operationsprozesses (cmd)

Beispielvorgang für nicht festgeschriebenes Lesen...

Fallstudie zum Zusammenführen von JavaScript-Arrays

Methode 1: var a = [1,2,3]; var b=[4,5] a = a.con...

MySql 8.0.11-Winxp64 (kostenlose Installationsversion) Konfigurations-Tutorial

1. Entpacken Sie das Zip-Paket in das Installatio...

Beispielcode zur Installation von ElasticSearch und Kibana unter Docker

1. Einleitung Elasticsearch erfreut sich derzeit ...

Fügen Sie Linux eine Startmethode hinzu (Dienst/Skript)

Konfigurationsdatei, die beim Systemstart geladen...

Tutorial zu XHTML-Webseiten

Dieser Artikel soll vor allem Anfängern einige gr...

Neue Funktionen in MySQL 8.0 - Einführung in Check Constraints

Inhaltsverzeichnis Vorwort Einschränkungen prüfen...

So bereinigen Sie den MySQL-Speicherplatz in der Alibaba Cloud

Heute habe ich von Alibaba Cloud eine Festplatten...

Was bedeutet href=# in einem Link?

Links zur aktuellen Seite. ------------------- Übl...

So installieren Sie Jupyter in Docker auf CentOS und öffnen Ports

Inhaltsverzeichnis Installieren Sie Jupyter Docke...

Lösung für den Fehler beim Kompilieren des LVGL-Emulators unter Linux

Inhaltsverzeichnis 1. Fehlerphänomen 2. Fehlerana...