Heim > Web-Frontend > Front-End-Fragen und Antworten > Hat das Vue-Projekt nur eine Vue-Instanz?

Hat das Vue-Projekt nur eine Vue-Instanz?

青灯夜游
Freigeben: 2022-12-19 15:25:03
Original
2708 Leute haben es durchsucht

Nein, ein Vue-Projekt kann mehrere Vue-Instanzen enthalten. In einem Vue-Projekt ist im Allgemeinen nur eine VUE-Instanz in main.js definiert, und die anderen sind Vue-Komponenteninstanzen. Vue wird aus Instanzen erstellt. Eigenschaften können in jede Komponente geschrieben werden, sodass jede Komponente eine Instanz von Vue ist.

Hat das Vue-Projekt nur eine Vue-Instanz?

Die Betriebsumgebung dieses Tutorials: Windows7-System, Vue3-Version, DELL G3-Computer.

Nein, ein Vue-Projekt kann mehrere Vue-Instanzen enthalten.

Vue wird aus Instanzen erstellt. Eine Komponente ist eine Instanz von Vue. Eigenschaften können in jede Komponente geschrieben werden, sodass jede Komponente eine Instanz von Vue ist. In einem Vue-Projekt ist im Allgemeinen nur eine VUE-Instanz in main.js definiert, und die anderen sind Vue-Komponenteninstanzen.

Vue-Instanz

Wenn Sie Vue zum Schreiben eines Projekts verwenden, ist die Vue-Instanz das Wichtigste. Sie gibt die Richtung vor, mit der Sie Vue schrittweise beherrschen können .

Laden Sie zunächst vue.js in eine HTML-Datei. Sie können die Datei vue.js direkt über das Skript-Tag laden:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue实例</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<body>
Nach dem Login kopieren

Öffnen Sie diese Seite mit einem Browser, geben Sie Vue in die Konsole ein. Sie werden feststellen, dass Vue vorhanden ist im Wesentlichen eine Funktion:

Hat das Vue-Projekt nur eine Vue-Instanz?

Tatsächlich ist Vue ein Konstruktor, der als „Klasse“ betrachtet werden kann und dessen Instanz durch neu erstellt wird. Wie viele Instanzen können also auf einer Seite erstellt werden?

Normalerweise wird auf einer Seite nur eine Vue-Instanz erstellt:

<body>
    <div id="app">Hello {{ msg }}</div>
    <script>
        const vm = new Vue({
            el: &#39;#app&#39;,
            data: function () {
                return {
                    msg: &#39;前端小课&#39;
                }
            }
        });
</script>
</body>
Nach dem Login kopieren

Beim Erstellen einer Vue-Instanz wird ein „angepasstes“ Objekt übergeben. Wir können das obige Objekt in eine andere Schreibweise ändern:

<body>
    <div id="app">Hello {{ msg }}</div>
    <script>
        const obj = {
            el: &#39;#app&#39;,
            data: function () {
                return {
                    msg: &#39;前端小课&#39;
                }
            }
        }
        const vm = new Vue(obj);
</script>
</body>
Nach dem Login kopieren

In der obj-Objekt, es gibt ein Attribut el, das die für die Vue-Instanz bereitgestellte „Vorlage“ darstellt. Das heißt, wenn Sie eine Instanz erstellen, müssen Sie Vue mitteilen, welcher HTML-Code gerendert wird und wie eine Verbindung zwischen ihnen hergestellt werden soll die Dinge, die im HTML und obj zu tun sind. Beispielsweise, wie man die in der HTML-Vorlage anzuzeigenden Daten mit den Daten der Vue-Instanz verknüpft und wie man auf die in der HTML-Vorlage auszulösenden Ereignisse reagiert. Um eine Zuordnung herzustellen, muss ein Vertrag zwischen der Vorlage und der Vue-Instanz geschlossen werden.

el kann ein Selektor oder eine HTMLElement-Instanz (Designarchitektur, die das DOM öffnet) sein. Sie können el wie folgt schreiben:

el: document.getElementById(&#39;app&#39;),
Nach dem Login kopieren

oder es kann ein beliebiger Selektor sein:

 el: &#39;div&#39;,
Nach dem Login kopieren

Was ist das unten angezeigte Ergebnis?

Hat das Vue-Projekt nur eine Vue-Instanz?

Schließlich wurde festgestellt, dass der Wert des Titels „Guten Morgen, checken Sie ein!“ nicht in HTML gerendert wurde. Dies liegt daran, dass das Div, in dem sich der Titel befindet, nicht im Bereich der Vue-Instanz liegt bedeutet, dass die Vue-Instanz nur zu der Vorlage verwendet werden kann, auf der die Instanz erstellt wurde (z. B. die Vorlage, auf die el zeigt):

Hat das Vue-Projekt nur eine Vue-Instanz?

Tatsächlich kann eine Seite mehrere Vue-Instanzen erstellen Der folgende Code erstellt 3 Vue-Instanzen und stellt fest, dass sie normal funktionieren:

<body>
    <div id="app">
        <h1>{{ msg }}</h1>
    </div>
    <div id="app-body">
        <h4>{{ title }}</h4>
    </div>
    <div class="app-footer">
        <h4>{{ footer }}</h4>
    </div>
    <script>
        const vm = new Vue({
            el: &#39;#app&#39;,
            data: function () {
                return {
                    msg: "欢迎来到前端小课",
                }
            }
        });
</script>
    <script>
        const vmBody = new Vue({
            el: &#39;#app-body&#39;,
            data: function () {
                return {
                    title: "Vue 实例讲解"
                }
            }
        });
</script>
    <script>
        const vmFooter = new Vue({
            el: &#39;.app-footer&#39;,
            data: function () {
                return {
                    footer: "感谢阅读",
                }
            }
        });
</script>
</body>
Nach dem Login kopieren

Öffnen Sie ihn mit einem Browser und das Ergebnis ist wie folgt:

Hat das Vue-Projekt nur eine Vue-Instanz?

Dieses Beispiel erinnert mich an Komponenten: „Komponenten sind wiederverwendbare Vue-Instanzen.“ Diese Schreibweise ist ein bisschen wie Komponenten. Jede Vue-Instanz wird als Komponente betrachtet.

Sehen wir uns ein weiteres Beispiel an – eine in der Vue-Instanz verschachtelte Vue-Instanz:

<body>
    <div id="app">
        <h1>{{ msg }}</h1>
        <!-- 这里不能声明一个新的 Vue 实例 -->
        <div id="app-body">
            <h4>会渲染吗?{{ title }}</h4>
        </div>
    </div>
    <script>
        const vm = new Vue({
            el: &#39;#app&#39;,
            data: function () {
                return {
                    msg: "欢迎来到前端小课",
                    title: "#app - Vue 实例讲解"
                }
            }
        });
</script>
    <script>
        const vmBody = new Vue({
            el: &#39;#app-body&#39;,
            data: function () {
                return {
                    title: "#app-body - Vue 实例讲解"
                }
            }
        });
</script>
</body>
Nach dem Login kopieren

Das Rendering-Ergebnis ist, und es wurde festgestellt, dass das Ergebnis die Daten in der #app-Instanz verwendet:

Hat das Vue-Projekt nur eine Vue-Instanz?

Es gibt auch Es gibt viele APIs, bei denen wir jeweils Schritt für Schritt lernen müssen. Zum Beispiel Lebenszyklusfunktionen, berechnete Eigenschaften, Definitionsmethoden, Filter:

Hat das Vue-Projekt nur eine Vue-Instanz?

Hat das Vue-Projekt nur eine Vue-Instanz?

[Verwandte Empfehlungen: vuejs-Video-Tutorial, Web-Front-End-Entwicklung]

Das obige ist der detaillierte Inhalt vonHat das Vue-Projekt nur eine Vue-Instanz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage