Implementierungsschritte zum Erstellen mehrseitiger Programme mit Webpack

Implementierungsschritte zum Erstellen mehrseitiger Programme mit Webpack

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.

Prinzip

Behandeln 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 Einzelseitenverpackungen

Schauen 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 Eingang

Traditionelles 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(),
 ...
}

Transformationsausgabe

In 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 konfigurieren

Wie 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 Konfiguration

Projektadresse: 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:
  • Electron-vue verwendet Webpack, um mehrere Seiten mit Eingabedateien zu verpacken
  • Implementierung der Webpack-Codefragmentierung
  • So debuggen Sie das Loader-Plugin in einem Webpack-Projekt
  • 80 Zeilen Code zum Schreiben eines Webpack-Plugins und Veröffentlichen auf npm
  • 50 Codezeilen zur Implementierung von Nutzungsstatistiken für Webpack-Komponenten
  • webpack -v Fehlerlösung

<<:  So finden Sie langsame SQL-Anweisungen in MySQL

>>:  Beispielcode für die Codevorlage für die Linux C-Protokollausgabe

Artikel empfehlen

Lösen Sie das Spleißproblem beim Löschen von Bedingungen in myBatis

Ich habe heute gerade Mybatis gelernt und einige ...

MySQL 5.7.18 Installations- und Konfigurations-Tutorial unter Windows

In diesem Artikel finden Sie das Installations- u...

Eine einfache Implementierungsmethode für eine digitale LED-Uhr in CSS3

Das dürfte etwas sein, was viele Leute gemacht ha...

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

Inhaltsverzeichnis Installieren Sie Jupyter Docke...

Zusammenfassung der grundlegenden Verwendung von CSS3 @media

//Grammatik: @media Medientyp und | nicht | nur (...

Detaillierte Erklärung der Überwachungseigenschaften von Vue

Inhaltsverzeichnis Vue-Monitoreigenschaften Was i...

React-Beispiel, das den Fortschritt des Datei-Uploads zeigt

Inhaltsverzeichnis React-Demo zur Anzeige des Dat...

Anwendungsszenarien und Lösungen für die MySQL-Komprimierung

Einführung Beschreibt die Anwendungsfälle und Lös...