Lernen Sie die wichtigsten Kenntnisse, die im Vue-Framework beherrscht werden müssen

Lernen Sie die wichtigsten Kenntnisse, die im Vue-Framework beherrscht werden müssen

1. Was ist Vue

Vue ist ein fortschrittliches Framework zum Erstellen von Benutzerseiten. Anders als andere große Frameworks ist Vue darauf ausgelegt, Schicht für Schicht von unten nach oben angewendet zu werden. Die Kernbibliothek von Vue konzentriert sich nur auf die Ansichtsebene. Dies erleichtert nicht nur den Einstieg, sondern lässt sich auch problemlos in Bibliotheken von Drittanbietern oder vorhandene Projekte integrieren. Andererseits ist Vue in Kombination mit einer modernen Toolchain und verschiedenen unterstützenden Bibliotheken durchaus in der Lage, komplexe Single-Page-Anwendungen auszuführen.

2. Unterschiede zu nativem JS

Wir können dies anhand eines kleinen Falles demonstrieren

Beispiel: Informationen im Eingabefeld im Span-Tag in Echtzeit anzeigen

Natives JS

<Text>
 <Eingabe-ID='txt' Typ="text">
 <span id='con'></span>
</body>
<Skript>
 document.querySelector('#txt').addEventListener('keyup', Funktion () {
 document.querySelector('#con').innerHTML = dieser.Wert
 })
</Skript>

Ausblick

<Text>
 <div id="app">
 <Eingabe-ID='txt' Typ="Text" v-Modell="msg">
 <span id='con'>{{msg}}</span>
 </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<Skript>
 let app = neues Vue({
 el: "#app",
 Daten: {
  Nachricht: ""
 }
 })
</Skript>

Unterschied: Der offensichtliche Unterschied besteht darin, dass der Betrieb von DOM-Elementen weggelassen wird

Zusammenfassen:

  1. Erstellen Sie ein DOM-Element und machen Sie es zum Einhängepunkt der Vue-Instanz. Alle Daten in der Vue-Instanz können im Einhängepunkt verwendet werden.
    <div id=app>
    </div>
  2. Erstellen Sie ein Instanzobjekt über new Vue
  3. el Attribut gibt den Einhängepunkt der aktuellen Vue-Instanz an
  4. Die Daten in data sind die Modelldaten, die von der aktuellen Vue-Instanz abhängen. Sie können die Daten anzeigen, indem Sie app.msg in die Konsole eingeben.
  5. Die Daten in Daten können durch Interpolationsausdrücke verwendet werden

3. Datenbindung

Die Datenbindung besteht darin, die Daten im Datenattribut der Vue-Instanz im Einhängepunkt anzuzeigen

1. Inhaltliche Verbindlichkeit

Zeigen Sie die Daten in Daten als Inhalt an

<div id='App'>
 <p>{{msg}}</p>
</div>

Wenn Sie HTML-Tags anzeigen möchten, verwenden Sie einfach v-html in den Tags.

<div id='App'>
 <p v-html>{{msg}}</p>
</div>

2. Eigentumsbindung

Verwenden Sie die Daten in Daten als Attributwert eines Elements

Verwenden Sie einfach v-bind . Die Attribute können eingebaut oder angepasst werden. Die Kurzform lautet :

<p v-bind:id="Ich würde" :class="Klasse">{{msg}}</p>

3. Der Wert des Formular-Tags

Mit der v-model Direktive können Sie die bidirektionale Datenbindung in Formular-Tags verwenden. Es wird automatisch die richtige Methode zum Aktualisieren des Elements basierend auf dem Steuerelementtyp ausgewählt.

1. Textboxen und Textfelder

<Eingabetyp:'Text' v-Modell="msg"></Eingabe>
<Textbereich v-Modell:'msg'><Textbereich>

2. Kontrollkästchen

<div id='App'>
	<label für:'schwimmen'><label>
 <Eingabetyp='Kontrollkästchen' ID=schwimmen v-Modell='isSwim'/>
 <label for="read">Lesen</label>
 <input type="checkbox" id="lesen" v-model="isRead">
 <label for="play">Spiel</label>
 <Eingabetyp="Kontrollkästchen" ID="abspielen" v-Modell="isPlay">
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<Skript>
 	let app = neues Vue({
 el:"#app",
 Daten:{
  isSwim:true,
  isRead:true,
  isPlay:false
 }
 }) 
 </Skript>

Optionsfeld

<div id="app">
	<label for="man">Männlich</label>
 <input type="radio" id="mann" value="mann" v-model="geschlecht">
 <label for="women">Frauen</label>
 <input type="radio" id="Frauen" value="Frauen" v-model="Geschlecht">
 {{Geschlecht}}
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<Skript>
 	let app = neues Vue({
 el:"#app",
 Daten:{
  Geschlecht:''
 }
 }) 
 </Skript>

Dropdown-Feld

<div id="app">
 <Wählen Sie v-Modell="Stadt">
 <option disabled value="">Bitte wählen</option>
 <option value="bj">Peking</option>
 <option value="sh">Shanghai</option>
 </Auswählen>
 {{Stadt}}
 </div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<Skript>
 	let app = neues Vue({
 el:"#app",
 Daten:{
 Stadt:""
 }
 }) 
 </Skript>

Übergeben von Parametern

<div id='App'>
	<button v-on:click="showInfo('hallo')">Schaltfläche</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<Skript>
	let app = neues Vue({
 el:"#app",
 Daten:{
  Titel: „Neujahr“
 },
 Methoden:{
  showInfo:Funktion(Nachricht){
  console.log(Nachricht)
  }
 }
 })
</Skript>

4. Ereignisbehandlung

Mit v-on können Sie auf DOM-Ereignisse warten und JavaScript-Code ausführen, wenn diese ausgelöst werden.

<div id=app>
 <button v-on:click='begrüßen'></button>
</div>
var app = new Vue({
 el:'#app',
 Daten:{
 Name:'Holle Vue'
 },
 //Methoden in Methoden definieren:{
 Begrüßung:Funktion(Ereignis){
  //dies zeigt auf die Vue-Instanz in der Methode alert(this.name + '!')
  wenn (Ereignis) {
 		Alarm(Ereignis.Ziel.TagName)
 	}
 }
})

5. Listen-Rendering

Wir können v-for Direktive verwenden, um eine Liste basierend auf einem Array zu rendern. v-for erfordert eine spezielle Syntax in der Form item in items , wobei items das Quell-Daten-Array und item ein Alias ​​für das iterierte Array-Element ist.

<div id='App'>
	<ul>
 		<li v-for="blog in blogs">{{blog}}</li>
 </ul>
 <ul>
 <li v-for="stu in stus">Name: {{stu.name}} Alter: {{stu.age}}</li>
 </ul>
</div>
var app = new Vue({
 el:"#app",
 Daten:{
 Blogs:['Übung der Drei Königreiche','Reise nach Westen','Alter Meister Q'],
 stus:[
  {Name:'Xiao Ming',Alter:18},
  {Name:'Xiao Zhang',Alter:11},
  {Name:'Xiao Wang',Alter:12}
 ]
 }
})

Daten vom Server abrufen

<Text>
 <div id="app">
 <ul>
 <li v-for="item in books">{{item.title}}</li>
 </ul>
 </div>
 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
 <Skript>
 let app = neues Vue({
 el: '#app',
 Daten: {
  Bücher: [],
 },
 erstellt: Funktion () {
  holen('data.json')
  .then((res) => {
  return res.json()
  })
  .then((res) => {
  diese.Bücher = res
  })
 },
 })
 </Skript>

6. Bedingtes Rendern

1. Die v-if Direktive wird verwendet, um einen Inhalt bedingt darzustellen

<div v-if=true>hallo Vue</div>

2. Sie können auch v-else verwenden, um einen else-Block hinzuzufügen

<div v-if=false>hallo Vue</div>
<div v-else>Hallo Welt</div>

3. Verwenden Sie v-if Gruppierung für bedingtes Rendering für das <template> -Element

Wenn Sie mehrere Elemente wechseln müssen, können Sie template v-if hinzufügen. Da das <template> -Element ein unsichtbares Element ist, enthält das gerenderte Ergebnis <template> -Element nicht.

<Vorlage v-if="ok">
 <h1>Titel</h1>
 <p>Absatz 1</p>
 <p>Absatz 2</p>
</Vorlage>

4. v-if-else fungiert, wie der Name schon sagt, als else if-Block von v-if und kann kontinuierlich verwendet werden

<div v-if="Punktzahl==100">
 Volle Punktzahl</div>
<div v-else-if="Punktzahl>=80 && Punktzahl<100">
 Gut</div>
<div v-else-if="Punktzahl>=70 && Punktzahl<=60">
 Bestehen</div>
<div v-else-if="Ergebnis<60">
 Fehlgeschlagen</div>
<div v-sonst>
 Bitte geben Sie den korrekten Punktestand ein</div>

5. v-show zeigt Elemente auch basierend auf Bedingungen an

<div v-show="ok">hallo</div>

Im Gegensatz zu v-if wird das v-show Element immer gerendert und verbleibt im DOM.

Im Allgemeinen sind die Umschaltkosten v-if höher, während die anfänglichen Renderkosten v-show höher sind. Wenn Sie daher sehr häufig wechseln müssen, ist es besser v-show zu verwenden; wenn sich die Bedingungen während der Laufzeit selten ändern, ist es besser v-if zu verwenden.

7. Klassen- und Stilbindung

Wir können v-bind verwenden, um Klassennamen oder Inline-Stile zu binden

Bind-Klasse zum dynamischen Wechseln von Klassen und kann auch mit normalen Klassen koexistieren

<div Klasse = "static" v-bind:class = "{active:isActive,'text-danger:hasError'}"></div>
Daten{
 istAktiv:true
 hatFehler:false
}

Das Rendering-Ergebnis ist:

<div Klasse = 'statisch aktiv'></div>

Binden von Stilen auf Inline-Ebene

Syntax v-bind:style

<div v-bind:style='{color:activeColor,fontSize:fontSize+'px'}'></div>
Daten:{
 aktiveFarbe:"rot",
 Schriftart: 13
}

Sie können auch direkt an ein Stilobjekt binden, was die Vorlage übersichtlicher macht

<div v-bind:style="aktiv"></div>
Daten:{
 aktiv:{
 Farbe: "rot",
  Schriftgröße: '30px'
 }
}

8. Berechnete Eigenschaften

Wenn wir den Wert in der Vorlage berechnen müssen, können wir berechnete Eigenschaften verwenden (berechnet)

<div id="#app">
 <p>{{Nachricht}}</p>
 <p>{{umgekehrte Nachricht}}</p>
</div>
var app = new Vue({
 el:"#app",
 Daten:{
 Nachricht: „Hallo“
 },
 berechnet:{
 reverMessage(){
  gib diese.Nachricht.Split('').Reverse().Join('') zurück
 }
 }
})

9. Zuhörer

Listener können Datenänderungen auf einer Vue-Instanz beobachten und darauf reagieren.

<div id="app">
 <div>
 Frage: <input v-model="question">
 </div>
 
 <div>{{Antwort}}</div>
</div>
 var app = new Vue({
 el: "#app",
 Daten: {
  Frage: "",
  Antwort: [],
 },
 betrachten:
  Frage(neuerWert) {
  dies.getAnswer()
  }
 },
 Methoden: {
  getAnswer: Funktion () {
  lass das = dies
  axios.get('http://localhost:3000/answer.php?q=' + diese.Frage)
   .then(Funktion (Antwort) {
   das.Antwort = Antwort.Daten
   })
  }
 }
 })

PHP Code (in Englisch)

<?php
 $frage = $_GET['q'];
	$antwort=[];
	Schalter($Frage){
 Fall "klein":
 $answer=['Kleines Kind', 'Kleine Schwester', 'Kleines Frischfleisch'];
 brechen;
 Fall „Wenig Frischfleisch“:
 $answer=['Was ist Frischfleisch?', 'Was nützt Frischfleisch?', 'Kann man Frischfleisch essen?'];
  brechen;
 Fall „Junger gutaussehender Typ spielt Schauspielerei“:
 $answer=["Das Schauspiel des jungen Schauspielers ist zu künstlich","Der junge Schauspieler wurde gesperrt","Der junge Schauspieler kann kein Schauspieler sein"];
 brechen;
 }
echo json_encode($antwort);
?>

Demo

Antwort = Antwort.Daten
PHP-Code ```php
<?php
 $frage = $_GET['q'];
	$antwort=[];
	Schalter($Frage){
 Fall "klein":
 $answer=['Kleines Kind', 'Kleine Schwester', 'Kleines Frischfleisch'];
 brechen;
 Fall „Wenig Frischfleisch“:
 $answer=['Was ist Frischfleisch?', 'Was nützt Frischfleisch?', 'Kann man Frischfleisch essen?'];
  brechen;
 Fall „Junger gutaussehender Typ spielt Schauspielerei“:
 $answer=["Das Schauspiel des jungen Schauspielers ist zu künstlich","Der junge Schauspieler wurde gesperrt","Der junge Schauspieler kann kein Schauspieler sein"];
 brechen;
 }
echo json_encode($antwort);
?>

Demo

10. Spielautomaten

Slot-Inhalte

var el_div = {
 Vorlage:
	<div><Steckplatz></Steckplatz></div>
}
<div id=app>
	<el-div>
 <span>Slot-Inhalte</span>
 </el-div>
</div>

Beim Rendern der Komponente wird slot durch <span>插槽內容</span> ersetzt. Slots können jeden beliebigen Vorlagencode enthalten

Fallback-Inhalte

Manchmal ist es nützlich, für einen Slot bestimmten Fallback-Inhalt (also Standardinhalt) festzulegen, der nur gerendert wird, wenn kein Inhalt bereitgestellt wird. Beispielsweise in einer <submit-button> -Komponente:

<button type="senden">
 <Steckplatz></Steckplatz>
</button>

In den meisten Fällen möchten wir, dass dieser <button> den Text „Senden“ rendert. Um „Senden“ als Fallback-Inhalt zu verwenden, können wir es in ein <slot> -Tag einfügen:

<button type="senden">
 <slot>Senden</slot>
</button>

Wenn ich jetzt <submit-button> in einer übergeordneten Komponente verwende und keinen Slot-Inhalt bereitstelle:

<Senden-Schaltfläche></Senden-Schaltfläche>

Der Fallback-Inhalt „Senden“ wird gerendert:

<button type="senden">
 Einreichen
</button> 

Aber wenn wir Inhalte bereitstellen:

<Senden-Schaltfläche>
 Speichern
</Absenden-Schaltfläche>

Dann wird der bereitgestellte Inhalt anstelle des Fallback-Inhalts gerendert:

<button type="senden">
 Speichern
</button> 

Benannte Slots

Manchmal benötigen wir mehr als einen Slot. Beispielsweise für eine <base-layout> -Komponente mit der folgenden Vorlage:

<div Klasse="Container">
 <Kopfzeile>
 <!-- Hier möchten wir den Seitenkopf einfügen -->
 </header>
 <Haupt>
 <!-- Hier möchten wir den Hauptinhalt einfügen-->
 </main>
 <Fußzeile>
 <!-- Hier möchten wir den Footer einfügen -->
 </Fußzeile>
</div>

Für solche Fälle hat das <slot> -Element ein spezielles Attribut: name . Mit diesem Attribut können zusätzliche Slots definiert werden:

<div Klasse="Container">
 <Kopfzeile>
 <slot name="header"></slot>
 </header>
 <Haupt>
 <Steckplatz></Steckplatz>
 </main>
 <Fußzeile>
 <slot name="Fußzeile"></slot>
 </Fußzeile>
</div>

Ein <slot> -Exit ohne name hat den impliziten Namen „default“.

Wenn wir einem benannten Slot Inhalt bereitstellen, können wir die Direktive v-slot auf ein <template> -Element anwenden und seinen Namen als Argument für v-slot angeben:

<Basislayout>
 <Vorlage v-slot:header>
 <h1>Hier könnte ein Seitentitel stehen</h1>
 </Vorlage>

 <p>Ein Absatz für den Hauptinhalt.</p>
 <p>Und noch einer.</p>

 <Vorlage v-slot:footer>
 <p>Hier sind einige Kontaktinformationen</p>
 </Vorlage>
</Basislayout>

Jetzt wird der gesamte Inhalt innerhalb des <template> -Elements an die entsprechenden Slots übergeben. Jeder Inhalt, der nicht in <template> mit v-slot verpackt ist, wird als Inhalt des Standardslots behandelt.

Wenn Sie es jedoch deutlicher machen möchten, können Sie den Inhalt des Standard-Slots dennoch in ein <template> einschließen:

<Basislayout>
 <Vorlage v-slot:header>
 <h1>Hier könnte ein Seitentitel stehen</h1>
 </Vorlage>

 <Vorlage v-slot:default>
 <p>Ein Absatz für den Hauptinhalt.</p>
 <p>Und noch einer.</p>
 </Vorlage>

 <Vorlage v-slot:footer>
 <p>Hier sind einige Kontaktinformationen</p>
 </Vorlage>
</Basislayout>

Jedes davon wird angezeigt:

<div Klasse="Container">
 <Kopfzeile>
 <h1>Hier könnte ein Seitentitel stehen</h1>
 </header>
 <Haupt>
 <p>Ein Absatz für den Hauptinhalt.</p>
 <p>Und noch einer.</p>
 </main>
 <Fußzeile>
 <p>Hier sind einige Kontaktinformationen</p>
 </Fußzeile>
</div>

Oben finden Sie den detaillierten Inhalt der wichtigsten Kenntnisse, die beim Erlernen von Vue beherrscht werden müssen. Weitere Informationen zu den wichtigsten Kenntnissen von Vue finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Untersuchung der Verwendung und Prinzipien von Vue nextTick
  • Erfahren Sie mehr über Beispiele für Vue-Komponenten
  • Erfahren Sie mehr über das bedingte Rendering von Vue.js
  • Erfahren Sie mehr über die berechneten Eigenschaften von Vue.js
  • Einfaches Lernen der Vue-Direktive
  • Lernunterlagen zum Schreiben des ersten Vue-Programms

<<:  Detaillierte Erläuterung der Redis-Persistenz, Master-Slave-Synchronisierung und Sentinel unter Linux

>>:  So verwenden Sie reguläre Ausdrucksabfragen in MySql

Artikel empfehlen

Detaillierte Erläuterung des mobilen Projekts vite2.0 + vue3

1. Technische Punkte Vite-Version vue3 ts Integri...

Detaillierte Erklärung der Funktion und Verwendung der DOCTYPE-Deklaration

1. Browser-Rendering-Modus und Doctype Einige Web...

Beispielcode für CSS-Pseudoklassen zum Ändern des Eingabeauswahlstils

Hinweis: Diese Tabelle ist aus dem W3School-Tutor...

Beispielcode zur Implementierung von dynamischem Skinning mit vue+element

Manchmal kann das Thema eines Projekts nicht jede...

Zusammenfassung aller HTML-Interviewfragen

1. Die Rolle des Doctypes, der Unterschied zwisch...

display:grid in CSS3, eine Einführung in das Rasterlayout

1. Rasterlayout (Raster): Es unterteilt die Webse...

Das Prinzip und die Implementierung des JS-Drag-Effekts

Die Drag-Funktion wird hauptsächlich verwendet, u...

MySQL Slow Query-Optimierung: Die Vorteile von Limit aus Theorie und Praxis

Oftmals erwarten wir, dass das Abfrageergebnis hö...

Ausführliche Erläuterung der MySQL-Isolationsebene und des Sperrmechanismus

Inhaltsverzeichnis Kurzbeschreibung: 1. Vier Merk...

So implementieren Sie abgerundete Ecken mit CSS3 unter Verwendung von JS

Ich bin auf ein Beispiel gestoßen, als ich nach e...

JS Leicht verständliche Funktion und Konstruktor

Inhaltsverzeichnis 1. Übersicht 1.1 Erstellen ein...