Ein auf Vue-cli basierender Codesatz unterstützt mehrere Projekte

Ein auf Vue-cli basierender Codesatz unterstützt mehrere Projekte

Anwendungsszenario

Im B2B-Geschäft verlangen Kunden mehr oder weniger individuelle Anpassungen für dasselbe Produkt. Von der Haut, den Bildern bis hin zu einigen kleinen funktionalen Unterschieden.
Die Frontpartie wird immer zuerst modifiziert. Wenn die Änderungen geringfügig sind, erhöht das Ziehen eines Zweigs die Wartungskosten. Wenn zu viele Zweige gezogen werden und ein Problem mit dem Hauptstamm vorliegt, entspricht dies dem Kopieren von n Kopien, was wirklich eine sehr schmerzhafte Erfahrung ist. Ist es also möglich, dass ein Codesatz mehrere Projekte unterstützt?

Vor einiger Zeit erhielt ich eine Anforderung und die ausgewählte Technologie war VUE, die mit vue-cli erstellt wurde. Ein Codesatz muss mehr als zehn Kunden unterstützen. Die Skins und Funktionen der einzelnen Kunden weisen einige geringfügige Unterschiede auf, aber der Hauptprozess ist ungefähr derselbe. Wir haben die Lösung in diesem Szenario untersucht.

Ideen

Die Grundidee besteht in der Modularisierung und darin, während der Kompilierung entsprechend den Eingabebefehlen direkt verschiedene Module zusammenzustellen, um die benötigten Seiten zu packen.
Hier gibt es zwei Probleme:

1. Wie unterteilt man Seiten und steuert die Granularität der Komponenten?

2. Wie führe ich eine differenzielle Kompilierung durch?

Projektstruktur

Dieselbe Seite hat einige gemeinsame und einige unterschiedliche Teile. Die Komponentenidee von Vue selbst macht es uns leicht, daran zu denken, die Seite in Komponenten aufzuteilen, dann die gemeinsamen zu extrahieren und sie separat zu verarbeiten.

Gesamtprojektstruktur

  • bauen

Die Build-Struktur umfasst hauptsächlich einige Skriptkonfigurationen von Webpack

  • Konfiguration

Die Konfigurationsdatei ist hauptsächlich eine projektbezogene Konfiguration. Wir verwenden sie häufig, um den Abhörport, den Paketausgabepfad und die Benennung zu konfigurieren, wenn ein Portkonflikt vorliegt.

  • Quelle

Quellcodedateien.

  • Vermögenswerte

Statische Ressourcen, normalerweise Bilder, Stile usw.

  • weniger

Dabei werden die Styledateien nach verschiedenen Themengebieten unterteilt.

  • Seiten

Auslagerungsdatei

  • Router

Routenplanung

  • util

Werkzeuge

  • Komponenten

Die Ordner enthalten die Komponenten jedes Projekts. Das Komponentenverzeichnis enthält öffentliche Komponenten.

  • statisch

Statische Ressourcen werden nicht von Webpack kompiliert. Legen Sie grundsätzlich externe Referenzdateien ab.

Webpack-Verpackungskonfiguration

Wie kompiliert man differenziell?

1.cross-env verwendet Umgebungsvariablen. Während der Kompilierungsphase werden verschiedene Komponenten entsprechend den für die Kompilierung übergebenen Variablen kompiliert.
Zuerst müssen wir die Datei package.json ändern

"Skripte": {
 "dev:gx": "umgebungsübergreifend BRANCH_ENV=gx-Knotenbuild/dev-server.js",
 "build:gx": "umgebungsübergreifende BRANCH_ENV=gx-Knotenbuild/build.js"
 },

Zu diesem Zeitpunkt können wir beim Kompilieren den entsprechenden Befehl eingeben, um die entsprechenden Umgebungsvariablen zu übergeben.
zB: npm run dev:gx übergibt BRANCH_ENV=gx.

2. Fügen Sie diese Umgebungsvariable in config/prod.env.js ein

modul.exporte = {
 NODE_ENV: '"Produktion"',
 API_PATH:'""',
 BRANCH_ENV: JSON.stringify(Prozess.Umgebung.BRANCH_ENV) || '"Basis"',
 ignoreCsrfToken:'"false"'
}

3.webpack.base.conf.js

 lösen: {
 Erweiterungen: ['', '.js', '.vue', '.json'],
 Fallback: [Pfad.Join(__Dirname, '../node_modules')],
 Alias: {
 "vue$": "vue/dist/vue.common.js",
 'src': Pfad.auflösen(__dirname, '../src'),
 'Assets': Pfad.Auflösen(__Verzeichnisname, '../src/assets/images/'+Prozess.Umgebung.BRANCH_ENV),
 'Komponenten': Pfad.Auflösen(__Verzeichnisname, '../src/Komponenten'),
 'componentsDif': Pfad.auflösen(__dirname, '../src/components/'+process.env.BRANCH_ENV),
 }
 },

Es ist ersichtlich, dass wir beim Einführen des Alias ​​die vom Kompilierungsbefehl eingefügten Umgebungsvariablen verwendet haben. Nehmen wir zum Beispiel an, der von mir eingegebene Kompilierbefehl lautet

npm-Ausführung build:gx

Zu diesem Zeitpunkt

„Assets“: Pfad.Auflösen(__Verzeichnisname, „../src/assets/images/“+Prozess.Umgebung.BRANCH_ENV)
// entspricht „assets“: path.resolve(__dirname, „../src/assets/images/gx“)

Seitenverweise

1. Bildreferenz

<img class="icon-arrow" src="~assets/arrow.png">
//Gemäß dem Kompilierungsbefehl. Die Bildreferenz lautet src/assets/images/gx/arrow.png

Hintergrund: URL (~assets/btn_1.png) keine Wiederholung;

PS: Denken Sie daran, das Zeichen ~ hinzuzufügen, wenn Sie einen Alias ​​verwenden

2. Komponentenreferenz

//Öffentliche Komponente importiere RuleTitle aus 'components/RuleTitle'
//Differenzierungskomponente importiere RuleContent aus 'componentsDif/RuleContent'

Zusammenfassen

Kurz gesagt besteht die Kernidee darin, dem Kompilierungsbefehl zu folgen, um Umgebungsvariablen zu übergeben, und die Konfiguration von Umgebungsvariablen und Aliasen zu verwenden, um die Verpackung zu differenzieren. Schwieriger ist die Steuerung der Granularität von Komponenten und die Aufteilung von Komponenten, die je nach Bedarf angepasst werden müssen.

Oben sind die Details eines Codesatzes auf Basis von Vue-cli zur Unterstützung mehrerer Projekte aufgeführt. Weitere Informationen zu einem Codesatz auf Basis von Vue-cli zur Unterstützung mehrerer Projekte finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Vollständige Schritte zum Konfigurieren von Eslint-Codespezifikationen für Vue-CLI3-Projekte
  • Verwenden Sie vue-cli3, um ein Vue-Projekt zu erstellen und VS Code so zu konfigurieren, dass das Problem mit der Vue-Syntaxhervorhebung automatisch formatiert wird
  • Verwenden Sie vue-cli webpack, um schnell Projektcode zu erstellen
  • vue-cli+webpack verwendet Bootstrap-Beispielcode im generierten Projekt
  • Detaillierte Erklärung der Fehlerlösung beim Öffnen des Vue-CLI-Projekts im IE-Browser
  • Beheben Sie das Problem, dass Vue-cli3 keinen vue.config.js-Ordner hat und konfigurieren Sie den Domänennamen des Vue-Projekts
  • So erstellen Sie ein Vorlagenprojekt mit vue-cli
  • So stellen Sie ein Vue-CLI3-Projekt nach dem Verpacken automatisch auf dem Server bereit
  • Vue-cli oder Vue-Projekt wird mit HBuilder in den mobilen App-Betrieb gepackt
  • Zusammenfassung der Methoden zum Upgrade eines Vue-CLI3-Projekts auf Vue-CLI4

<<:  Datenbankübergreifende Assoziationsabfragemethode in MySQL

>>:  So verwenden Sie Yum zum Konfigurieren der lnmp-Umgebung im CentOS7.6-System

Artikel empfehlen

MySQL-Batch löschen großer Datenmengen

MySQL-Batch löschen großer Datenmengen Angenommen...

Beispielcode zum Ändern der Farbe eines PNG-Bildes durch einen CSS3-Filter

Diese Methode verwendet den filter in CSS3 drop-s...

Beispiel zum Anzeigen und Ändern der MySQL-Transaktionsisolationsebene

Überprüfen Sie die Transaktionsisolationsebene In...

Verwenden Sie sauberes HTML-Markup zum Erstellen Ihrer Seiten

Das Internet ist ein Organismus, der sich ständig...

Detaillierte Analyse von MySQL-Datenbanktransaktionen und -Sperren

Inhaltsverzeichnis 1. Grundlegende Konzepte SÄURE...

So optimieren Sie die langsame Like-Fuzzy-Abfrage in MySQL

Inhaltsverzeichnis 1. Einleitung: 2. Die erste Id...

So installieren Sie eine virtuelle Maschine mit Windows-Diensten auf dem Mac

1. Laden Sie die virtuelle Maschine herunter Offi...

Import-, Export-, Sicherungs- und Migrationsvorgänge für Docker-Images

Export: docker save -o centos.tar centos:latest #...

Detaillierte Erläuterung der kombinierten MySQL-Abfrage

Verwenden von UNION Die meisten SQL-Abfragen best...

Sonderzeichen in HTML anzeigen (mit Sonderzeichen-Korrespondenztabelle)

Reproduktion des Problems Beim Bearbeiten mit HTM...

Einführung in die Funktionen und Verwendung von Wert- und Namensattributen in HTML

1. Der in der Schaltfläche verwendete Wert bezieht...

Verwendung des Linux-Befehls „sar“ und Analyse von Codebeispielen

1. CPU-Auslastung sar -p (den ganzen Tag anzeigen...