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

Definition und Verwendung des MySQL-Cursors

Erstellen eines Cursors Erstellen Sie zunächst ei...

MariaDB-Serverinstallation der MySQL-Reihe

Inhaltsverzeichnis Tutorial-Reihe 1. Installieren...

Eine kurze Zusammenfassung von Vue Keep-Alive

1. Funktion Wird hauptsächlich verwendet, um den ...

Grundkenntnisse im Website-Design: Neulinge lesen bitte dies

Heutzutage beginnen viele Leute damit, Websites z...

Beispiele für Clearfix und Clear

In diesem Artikel wird hauptsächlich die Verwendun...

Zusammenfassung der Grundlagen der Vue-Komponenten

Komponentengrundlagen 1 Wiederverwendung von Komp...

Zweistündiges Docker-Einführungstutorial

Inhaltsverzeichnis 1.0 Einleitung 2.0 Docker-Inst...

Detaillierte grafische Erläuterung der MySql5.7.18-Zeichensatzkonfiguration

Hintergrund: Vor langer Zeit (2017.6.5, der Artik...

Teilen Sie das Problem, dass Ubuntu 19 die Docker-Quelle nicht installieren kann

Entsprechend den wichtigsten Websites und persönl...

Warum wird die MySQL-Paging-Funktion bei Verwendung von Limits immer langsamer?

Inhaltsverzeichnis 1. Testexperiment 2. Leistungs...

Webpack lädt CSS-Dateien und ihre Konfigurationsmethode

webpack lädt CSS-Dateien und deren Konfiguration ...

css3-Animation, Ballrollen, js-Steuerung, Animationspause

Mit CSS3 können Animationen erstellt werden, die ...