Es ist sehr üblich, webpack zum Erstellen einseitiger Programme zu verwenden, aber in der tatsächlichen Entwicklung müssen wir möglicherweise auch mehrseitige Programme entwickeln. Daher habe ich untersucht, wie man webpack zum Erstellen mehrseitiger Programme verwendet. PrinzipBehandeln Sie den Ordner, in dem sich jede Seite befindet, als separates einseitiges Programmverzeichnis und konfigurieren Sie mehrere Einträge und das HTML-Webpack-Plugin, um eine mehrseitige Verpackung zu erreichen. Nachfolgend sehen Sie die Verzeichnisstruktur dieses Projekts . ├─ Quelle │ └─ Seiten │ ├─ über │ │ ├─ index.css │ │ ├─ index.html │ │ └─ index.js │ └─ Index │ ├─ index.css │ ├─ index.html │ └─ index.js └─ webpack.config.js Basiskonfiguration für EinzelseitenverpackungenSchauen wir uns zunächst die Grundkonfiguration von Webpack für Single-Page-Anwendungen an. const HtmlWebpackPlugin = erfordern('html-webpack-plugin'); modul.exporte = { Eintrag: './src/index.js', Plugins: [ neues HtmlWebpackPlugin({ Vorlage: './src/index.html', Dateiname: 'index.html', }), ], Ausgabe: { Pfad: Pfad.auflösen(__dirname, './dist'), Dateiname: „bundle.js“, }, }; Um es in eine mehrseitige Anwendung umzuwandeln, müssen Sie den einzelnen Eintrag und die einzelne HTML-Vorlage in mehrere Einträge und mehrere HTML-Vorlagen ändern. Grundkonfiguration mehrseitiger Verpackungen Renovierung EingangTraditionelles Schreiben mit mehreren Einträgen kann in Form von Schlüssel-Wert-Paaren geschrieben werden modul.exporte = { Eintrag: { Index: './src/pages/index/index.js', über: './src/pages/about/index.js', }, ... } Wenn es auf diese Weise geschrieben wird, muss für jede weitere Seite manuell ein Eintrag hinzugefügt werden, was mühsam ist. Daher können wir eine Funktion definieren, die basierend auf dem Verzeichnis einen Eintrag generiert, um unseren Vorgang zu vereinfachen. const glob = erfordern('glob'); Funktion getEntry() { const-Eintrag = {}; glob.sync('./src/pages/**/index.js').forEach((Datei) => { const name = file.match(/\/pages\/(.+)\/index.js/)[1]; Eintrag[Name] = Datei; }); Rückmeldeeingang; } modul.exporte = { Eintrag: getEntry(), ... } TransformationsausgabeIn der Ausgabekonfiguration ist es nicht mehr sinnvoll, den Namen der Ausgabedatei fest zu codieren. Daher müssen wir den Namen so ändern, dass er mit dem Namen der Quelldatei übereinstimmt. modul.exporte = { ... Ausgabe: { Pfad: Pfad.auflösen(__dirname, './dist'), Dateiname: „js/[name].[contenthash].js“, }, ... } Mehrere HTML-Webpack-Plugins konfigurierenWie im Eintrag können verschiedene HTML-Vorlagen direkt in die Plugin-Konfiguration geschrieben werden. Hier müssen wir für jedes Plugin unterschiedliche Chunks konfigurieren, um zu verhindern, dass JS in das falsche HTML eingefügt wird const HtmlWebpackPlugin = erfordern('html-webpack-plugin'); modul.exporte = { ... Plugins: [ neues HtmlWebpackPlugin({ Vorlage: './src/pages/index/index.html', Brocken: ['Index'], Dateiname: 'index.html', }), neues HtmlWebpackPlugin({ Vorlage: './src/pages/about/index.html', Brocken: ['über'], Dateiname: 'about.html', }), ], ... }; Dieser Ansatz hat das gleiche Problem wie der Eintrag, daher definieren wir eine weitere Funktion, um diese Konfiguration zu generieren const HtmlWebpackPlugin = erfordern('html-webpack-plugin'); const glob = erfordern('glob'); Funktion getHtmlTemplate() { glob zurückgeben .sync('./src/pages/**/index.html') .map((Datei) => { return { Name: file.match(/\/pages\/(.+)\/index.html/)[1], Pfad: Datei }; }) .Karte( (Vorlage) => neues HtmlWebpackPlugin({ Vorlage: Vorlage.Pfad, Stücke: [Vorlage.Name.toString()], Dateiname: `${template.name}.html`, }) ); } modul.exporte = { ... Plugins: [...getHtmlTemplate()], ... }; So wurde ein einfaches mehrseitiges Projekt konfiguriert. Auf dieser Grundlage können wir auch Hot-Updates, Code-Splitting und andere Funktionen hinzufügen. Wenn Sie interessiert sind, können Sie es selbst ausprobieren. Vollständige KonfigurationProjektadresse: xmy6364/webpack-multipage // webpack.config.js const path = require('Pfad'); const HtmlWebpackPlugin = erfordern('html-webpack-plugin'); const glob = erfordern('glob'); const { CleanWebpackPlugin } = erforderlich('clean-webpack-plugin'); //Mehrseitige Einträge Funktion getEntry() { const-Eintrag = {}; glob.sync('./src/pages/**/index.js').forEach((Datei) => { const name = file.match(/\/pages\/(.+)\/index.js/)[1]; Eintrag[Name] = Datei; }); Rückmeldeeintrag; } //Mehrseitige Vorlage Funktion getHtmlTemplate() { glob zurückgeben .sync('./src/pages/**/index.html') .map((Datei) => { return { Name: file.match(/\/pages\/(.+)\/index.html/)[1], Pfad: Datei }; }) .Karte( (Vorlage) => neues HtmlWebpackPlugin({ Vorlage: Vorlage.Pfad, Stücke: [Vorlage.Name.toString()], Dateiname: `${template.name}.html`, }) ); } const konfiguration = { Modus: 'Produktion', Eintrag: getEntry(), Ausgabe: { Pfad: Pfad.auflösen(__dirname, './dist'), Dateiname: „js/[name].[contenthash].js“, }, Modul: { Regeln: { Test: /\.css$/, verwenden: ['style-loader', 'css-loader'], }, ], }, Plugins: [neues CleanWebpackPlugin(), ...getHtmlTemplate()], devServer: { contentBase: Pfad.join(__dirname, 'dist'), komprimieren: wahr, Port: 3000, heiß: wahr, offen: wahr, }, }; module.exports = Konfiguration; Damit ist dieser Artikel über die Implementierungsschritte bei der Verwendung von Webpack zum Erstellen eines mehrseitigen Programms abgeschlossen. Weitere relevante Inhalte zum Erstellen mehrerer Seiten mit Webpack finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: So finden Sie langsame SQL-Anweisungen in MySQL
>>: Beispielcode für die Codevorlage für die Linux C-Protokollausgabe
Erstellen eines Cursors Erstellen Sie zunächst ei...
Inhaltsverzeichnis 1 Was ist SSH 2 Konfigurieren ...
Inhaltsverzeichnis Tutorial-Reihe 1. Installieren...
Lassen Sie mich zunächst über die allgemeine Idee...
1. Funktion Wird hauptsächlich verwendet, um den ...
Heutzutage beginnen viele Leute damit, Websites z...
In diesem Artikel wird hauptsächlich die Verwendun...
Dieser Artikel veranschaulicht anhand eines Beisp...
Komponentengrundlagen 1 Wiederverwendung von Komp...
Inhaltsverzeichnis 1.0 Einleitung 2.0 Docker-Inst...
Hintergrund: Vor langer Zeit (2017.6.5, der Artik...
Entsprechend den wichtigsten Websites und persönl...
Inhaltsverzeichnis 1. Testexperiment 2. Leistungs...
webpack lädt CSS-Dateien und deren Konfiguration ...
Mit CSS3 können Animationen erstellt werden, die ...