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

Wissen Sie, wie Sie mit Vue Screenshots von Webseiten erstellen?

Inhaltsverzeichnis 1. Installieren Sie html2Canva...

Klassen in TypeScript

Inhaltsverzeichnis 1. Übersicht 2. Definieren Sie...

JavaScript zum Erreichen eines Mouse-Tailing-Effekts

Mauseffekte erfordern die Verwendung von setTimeo...

Beispielcode zur Eingabe des Kennzeichens und der Provinzkürzel in html

Das Prinzip besteht darin, zuerst ein Div mit ein...

Implementierung der MySQL-Datendesensibilisierung (Telefonnummer, ID-Karte)

1. Erklärung zur Datendesensibilisierung Bei den ...

CSS zum Erzielen des Effekts einer rotierenden Flip-Card-Animation

Die CSS-Animation des rotierenden Flip-Effekts, d...

Detaillierte Analyse des binlog_format-Modus und der Konfiguration in MySQL

Es gibt drei Hauptmethoden der MySQL-Replikation:...

So verwalten Sie große Datei-Uploads und Breakpoint-Resumes basierend auf js

Inhaltsverzeichnis Vorwort Frontend-Struktur Back...

Drei Diskussionen zum Iframe Adaptive Height Code

Beim Erstellen einer B/S-Systemschnittstelle stößt...