Vue3 Vue CLI-Konfiguration für mehrere Umgebungen

Vue3 Vue CLI-Konfiguration für mehrere Umgebungen

1. Einleitung

Dies ist weniger problematisch als zuvor. Einfach ausgedrückt werden Konfigurationsdateien verwendet, um mehrere Umgebungen zu verwalten und einen Umgebungswechsel zu realisieren.

2. Umschalten

1. Fügen Sie Entwicklungs- und Produktionskonfigurationsdateien hinzu

Erstellen Sie im Stammverzeichnis des Webs eine Konfigurationsdatei zum Wechseln der Entwicklungsumgebung .env.dev mit folgendem Inhalt:

NODE_ENV=Entwicklung
VUE_APP_SERVER=http://127.0.0.1:8880

Erstellen Sie im Stammverzeichnis des Webs eine Online-Umgebungswechselkonfigurationsdatei .env.prod mit folgendem Inhalt:

NODE_ENV=Produktion
VUE_APP_SERVER=https://www.baidu.com

2. Ändern Sie die Kompilierung und den Start, um mehrere Umgebungen zu unterstützen

Änderungen in package.json vornehmen, also den ursprünglichen server anpassen,

Der Beispielcode lautet wie folgt:

{
  "Name": "Webseite",
  "version": "0.1.0",
  "privat": wahr,
  "Skripte": {
    "serve-dev": "vue-cli-service serve --mode dev --port 8080",
    "serve-prod": "vue-cli-service serve --mode prod",
    "Build-dev": "vue-cli-service build --mode dev",
    "build-prod": "vue-cli-service build --mode prod",
    "Fussel": "Vue-CLI-Service-Fussel"
  },
  "Abhängigkeiten": {
    "@ant-design/icons-vue": "^5.1.9",
    "ant-design-vue": "^2.0.0-rc.3",
    "axios": "^0,21,0",
    "vue": "^3.0.0",
    "vue-router": "^4.0.0-0",
    "vuex": "^4.0.0-0"
  },
  "devAbhängigkeiten": {
    "@typescript-eslint/eslint-plugin": "^4.18.0",
    "@typescript-eslint/parser": "^4.18.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-plugin-router": "~4.5.0",
    "@vue/cli-plugin-typescript": "~4.5.0",
    "@vue/cli-plugin-vuex": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "@vue/compiler-sfc": "^3.0.0",
    "@vue/eslint-config-typescript": "^7.0.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^7.0.0",
    "Typoskript": "~4.1.5"
  }
}

Klicken Sie in npm rechts auf die Schaltfläche „Aktualisieren“, um den folgenden Effekt anzuzeigen:

Um die Wirkung zu sehen, fügen wir in main.ts einen Ausgabeprotokollcode hinzu, um zu überprüfen, ob die Änderung erfolgreich war.

Fügen Sie den folgenden Code hinzu:

Konsole.log('Umgebung',Prozess.Umgebung.NODE_ENV);
Konsole.log('Server',Prozess.Umgebung.VUE_APP_SERVER);


Wissenspunkte:

  • NODE_ENV ist die NODE_ENV Variable, die der Konfigurationsdatei entspricht
  • VUE_APP_SERVER ist die VUE_APP_SERVER Variable, die der Konfigurationsdatei entspricht

Kompilieren und starten Sie den Dienst neu. Das Ergebnis ist wie folgt:

3. Ändern Sie die Axios-Anforderungsadresse, um mehrere Umgebungen zu unterstützen

Warum ändern?

Da ein System nicht nur eine Anforderung haben kann und das Schreiben des vollständigen Pfads für jede Anforderung die Wartungskosten des Codes erhöht, ist es hier besser, für die Wartung eine einheitliche Konfiguration zu verwenden.

Da es global ist, müssen Sie es nur in main.ts ändern, axios verweisen und den Standardzugriffspfad festlegen.

Der Beispielcode lautet wie folgt:

importiere {createApp} aus „vue“;
importiere Antd von „Ant-Design-Vue“;
App aus „./App.vue“ importieren;
importiere „ant-design-vue/dist/antd.css“;
Router aus „./router“ importieren;
Store aus „./store“ importieren;
importiere Axios von „Axios“;
axios.defaults.baseURL=Prozess.Umgebung.VUE_APP_SERVER;

//Der Vorteil ist, dass es einfach zu entwickeln ist, aber der Nachteil ist, dass die Datei beim Verpacken größer wird (aber das hat keine Auswirkungen)
createApp(App).verwenden(speichern).verwenden(Router).verwenden(Antd).mount('#app')

console.log('Umgebung', Prozess.Umgebung.NODE_ENV);
Konsole.log('Server', Prozess.Umgebung.VUE_APP_SERVER);


Dann ändern wir die Anforderungsadresse von axios in home und lassen nur den Pfad übrig.

Der Beispielcode lautet wie folgt:

<Vorlage>
  <a-Layout>
    `<a-layout-sider width="200" style="Hintergrund: #fff">
      <a-Menü
          Modus="inline"
          v-Modell:selectedKeys="selectedKeys2"
          v-Modell:openKeys="openKeys"
          :Stil="{ Höhe: '100%', Rahmen rechts: 0 }"
      >
        <a-sub-menu key="sub1">
          <Vorlage #Titel>
                <span>
                  <Benutzer-umrissen />
                  Unternavigation 1
                </span>
          </Vorlage>
          <a-menu-item key="1">Option1</a-menu-item>
          <a-menu-item key="2">Option2</a-menu-item>
          <a-menu-item key="3">Option3</a-menu-item>
          <a-menu-item key="4">Option4</a-menu-item>
        </a-Untermenü>
        <a-sub-menu key="sub2">
          <Vorlage #Titel>
                <span>
                  <laptop-umrissen />
                  Unternavigation 2
                </span>
          </Vorlage>
          <a-menu-item key="5">Option 5</a-menu-item>
          <a-menu-item key="6">Option6</a-menu-item>
          <a-menu-item key="7">Option 7</a-menu-item>
          <a-menu-item key="8">Option8</a-menu-item>
        </a-Untermenü>
        <a-sub-menu key="sub3">
          <Vorlage #Titel>
                <span>
                  <Benachrichtigung-umrissen />
                  Unternavigation 3
                </span>
          </Vorlage>
          <a-menu-item key="9">Option9</a-menu-item>
          <a-menu-item key="10">Option10</a-menu-item>
          <a-menu-item key="11">Option11</a-menu-item>
          <a-menu-item key="12">Option12</a-menu-item>
        </a-Untermenü>
      </a-Menü>
  </a-layout-sider>
    `
    <a-list item-layout="vertikal" Größe="groß"
            :grid="{ gutter: 16, column: 3 }" :data-source="ebooks1">
      <template #renderItem="{ item }">
        <a-list-item key="Artikelname">
          <Vorlage #Aktionen>
          <span v-for="{ Typ, Text } in Aktionen" :key="Typ">
            <Komponente v-bind:is="Typ" style="margin-right: 8px"/>
            {{ text }}
          </span>
          </Vorlage>
          <a-list-item-meta :description="Artikel.Beschreibung">
            <Vorlage #Titel>
              <a :href="item.href" rel="externes nofollow" >{{ item.name }}</a>
            </Vorlage>
            <Vorlage #avatar><a-avatar :src="item.cover" /></Vorlage>
          </a-list-item-meta>
        </a-Listenelement>
      </Vorlage>
    </a-Liste>
  </a-layout>
</Vorlage>

<script lang="ts">
importiere {defineComponent, onMounted, reactive, ref, toRef} aus „vue“;
importiere Axios von „Axios“;
importiere {LikeOutlined, MessageOutlined, StarOutlined} aus '@ant-design/icons-vue';

const listData: Datensatz<Zeichenfolge, Zeichenfolge>[] = [];

exportiere StandarddefiniereKomponente({
  Komponenten:
    SternUmrissen,
    Wie umrissen,
    MessageOutlined,
  },
  Name: "Home",
  aufstellen(){
    const pagination = {
      beiÄnderung: (Seite: Nummer) => {
        console.log(Seite);
      },
      Seitengröße: 3,
    };
    Konstante Aktionen: Datensatz<Zeichenfolge, Zeichenfolge>[] = [
      { Typ: 'StarOutlined', Text: '156' },
      { Typ: 'LikeOutlined', Text: '156' },
      { Typ: 'MessageOutlined', Text: '2' },
    ];
    console.log('einrichten');
    //Verwenden Sie ref zur Datenbindung const ebooks=ref();
    // Reaktive Datenbindung verwenden const ebooks1 = reactive({books:[]})
    beim Montieren(()=>{
      axios.get("/ebook/list?name=").then(response => {
        console.log("beiMounted");
        const Daten = Antwort.Daten;
        ebooks.Wert = Daten.Inhalt;
        ebooks1.books = Daten.Inhalt;
        console.log(Antwort);
      })
    })
    zurückkehren {
      Pagination,
      Aktionen,
      ebooks1: E-Books,
      ebooks2: toRef(ebooks1, "Bücher")
    }

  }
});
</Skript>
<Stilbereich>
.ant-layout-sider {
  schweben: links;
}

.ant-avatar {
  Breite: 50px;
  Höhe: 50px;
  Zeilenhöhe: 50px;
  Randradius: 8 %;
  Rand: 5px 0;
}
</Stil>

Wir kompilieren neu und beginnen erneut. Die Ergebnisse sind wie folgt:

Aus dem roten Kreis ist ersichtlich, dass axios Anforderungsadresse geändert wurde und die globale Konfigurationswartung erfolgreich durchgeführt wurde.

Wissenspunkte:

  • Konfigurationsdateien für mehrere Umgebungen sollten im Web-Stammverzeichnis abgelegt werden.
  • .env.xxx , das Suffix xxx entspricht –mode xxx des Befehls in package.json
  • Fügen Sie den Parameter –port hinzu, um den Startport zu ändern
  • Benutzerdefinierte Variablen müssen mit VUE_APP_ beginnen.
  • Durch Festlegen axios.defaults.baseURL können Sie den Backend-IP-Port oder den Domänennamen einheitlich festlegen

Dies ist das Ende dieses Artikels über die Vue CLI-Konfiguration mehrerer Umgebungen von Vue3. Weitere relevante Inhalte zur Vue CLI-Konfiguration mehrerer Umgebungen finden Sie in den vorherigen Artikeln von 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 verwenden Sie den Tencent-Schieberegler-Verifizierungscode im Vue3+Vue-cli4-Projekt
  • Verwenden von Vue3 (Teil 1) Erstellen eines Vue CLI-Projekts
  • Vue3.0 CLI - 3.2 Grundlegendes Routing-Tutorial
  • vue3.0 CLI - 2.5 - Die drei Dimensionen von Komponenten verstehen
  • vue3.0 CLI - 2.4 - Lernen Sie Formulare in der neuen Komponente Forms.vue

<<:  Eine kurze Diskussion darüber, wie man Div und Tabelle auswählt und kombiniert

>>:  Analyse und Lösung des Grundes, warum das Frameset-Tag in HTML nicht normal angezeigt werden kann

Artikel empfehlen

Implementierung der Kommunikation zwischen Vue und Flask

axios installieren und Kommunikation implementier...

Beispiel für die Konfiguration der Timeout-Einstellung für MySQL-Datenbanken

Inhaltsverzeichnis Vorwort 1. JDBC-Timeout-Einste...

Drei Beispiele für Unschärfe-Hintergrundeffekte mit CSS3

Beginnen wir nicht mit der Einleitung, sondern ko...

Idea konfiguriert Tomcat zum Starten eines Webprojekts - Grafik-Tutorial

Tomcat konfigurieren 1. Klicken Sie auf „Konfigur...

Die MySQL-Partitionstabelle ist nach Monaten klassifiziert

Inhaltsverzeichnis Erstellen einer Tabelle Zeigen...

Lösung für unvollständige Textanzeige im El-Tree

Inhaltsverzeichnis Methode 1: Der einfachste Weg,...

MySQL-Einschränkungen - Super detaillierte Erklärung

Inhaltsverzeichnis MySQL-Einschränkungsoperatione...

Funktionsüberladung in TypeScript

Inhaltsverzeichnis 1. Funktionssignatur 2. Funkti...

Zusammenfassung gängiger Fehler beim Entwurf von MySQL-Tabellen

Inhaltsverzeichnis Fehler 1: Zu viele Datenspalte...

CSS Sticky Footer Mehrere Implementierungen

Was ist „Sticky Footer“ Der sogenannte „Sticky Fo...

So ändern Sie das Terminal in Ubuntu 18 in eine schöne Eingabeaufforderung

Ich habe VMware und Ubuntu neu installiert, aber ...