Vue 2.0 Grundlagen im Detail

Vue 2.0 Grundlagen im Detail

1. Funktionen

Ist ein MVVM-Framework

Abgeleitet von der MVC-Architektur ist es in View (Ansichtsebene), ViewModel (Datenansichtsebene) und Model (Datenebene) unterteilt. Das bekannteste Merkmal von MVVM ist die Datenbindung, die datengesteuerte Ansichten und die Ansichtssynchronisierung von Daten ermöglicht.

Daten sind auch einseitig, genannt Einweg-Datenfluss

Daten werden immer von der übergeordneten Komponente an die untergeordnete Komponente übergeben, und die untergeordnete Komponente hat kein Recht (nicht empfohlen), die Daten in der übergeordneten Komponente direkt zu ändern.

Nicht kompatibel mit IE8 und älteren Browsern

Das responsive Prinzip verwendet Object.defineProperty von es5, aber diese API unterstützt IE8 nicht

2. Beispiele

// Vue-Einzelseiteninstanz <template>
    Etikett...
</Vorlage>
<Skript>
    Standard exportieren {
      Daten () {},
      Methoden: {},
      berechnet: {},
      betrachten: {}
    }
</Skript>
<Stil>
    Stil...
</Stil>

3. Optionen

Daten

Funktion, mit der die Daten der Seite definiert werden

Daten() {
    zurückkehren {
        Anzahl: 2
        Anzahl Kopien: 1
    }
}

// Mit this.count // 2

berechnet

Objekte, berechnete Eigenschaften, die zur Vereinfachung komplexer Logikverarbeitung verwendet werden

// Die berechnete Eigenschaft akzeptiert keine Parameter, speichert abhängige Daten im Cache und muss eine Rückgabe haben
berechnet: {
    doubleCount: Funktion () {
      gib dies zurück.Anzahl *= 2
    },
}

// Verwenden von this.doubleCount // 4

Methoden

Objekt, das zum Definieren von Seitenfunktionen verwendet wird

Methoden: {
    cLog(Nachricht) {
        Konsole.log(Nachricht)
    }
}

// Use this.cLog('Die Funktion wurde aufgerufen') // Konsolenausgabe: Die Funktion wurde aufgerufen

betrachten

Objekt- und Attributüberwachung, die verwendet wird, um Änderungen in bestimmten Daten zu überwachen und entsprechende Vorgänge auszuführen

betrachten:
    Anzahl(Wert, [alterWert]) {
        // Wert: der geänderte Wert this.copyCount = Wert + 1
    }
}

// Wird automatisch ausgelöst, wenn sich die Anzahl ändert. this.count = 2
diese.copyCount // 3

Komponenten

Objekt, Komponenten auf der Seite registrieren

importiere UploadImg von 'xxxx'

Komponenten: { UploadImg }

// Vorlage
<Bild hochladen>

4. Grundlegende Grammatik

Allgemeine Anweisungen

v-html : Rendert HTML

v-if : Beurteilen Sie die Syntax, steuern Sie die Anzeige/Ausblendung und steuern Sie, ob DOM gerendert werden soll

v-show : steuert Anzeige/Ausblenden, ähnlich wie v-if, aber v-show wird über das Anzeigeattribut gesteuert

v-model : Zweiwege-Datenbindung, allgemein in Formularen verwendet, Standardbindungswertattribut

v-bind :

  • Abkürzung: Klasse
  • Für die dynamische Eigenschaftsbindung

v-on :

  • @klicken
  • Für die Ereignisbindung

v-for : Traversalsyntax, unterstützt Arrays, Objekte und Strings

5. Lebenszyklus

beforeCreated : Erstellen Sie ein Vue-Objekt

created : Dateninitialisierung, zu diesem Zeitpunkt können Sie einige Voroperationen an der Instanz durchführen

beforeMounted : el- und Dateninitialisierung

mounted : mounten Sie el und Daten, dann können Sie die HTTP-Anfrage aufrufen

beforeUpdated : vor der Aktualisierung des DOM kann der Status zu diesem Zeitpunkt weiter geändert werden, ohne einen erneuten Rendering-Prozess auszulösen

updated : Aktualisiert den geänderten virtuellen DOM auf der Seite. Zu diesem Zeitpunkt sollten Sie Änderungen an der Seite vermeiden, um Endlosschleifen bei Aktualisierungen zu vermeiden.

beforeDestory : Bevor die Seite zerstört wird, können Sie einige Rücksetzvorgänge durchführen, z. B. das Löschen von Timern und DOM-Ereignissen usw.

destoryed : Die Seite wurde zerstört. Zu diesem Zeitpunkt wurde die Vue-Instanz gelöscht und alle Vorgänge sind ungültig.

6. Routing-Verwaltung Vue-Router

Der offizielle Routing-Manager. Es ist tief in den Kern von Vue.js integriert und erleichtert die Erstellung von Single-Page-Anwendungen.

6.1 Routing-Konfiguration

// NPM herunterladen npm install vue-router
// router.js
Vue von „vue“ importieren
VueRouter von „vue-router“ importieren
Vue.use(VueRouter)

//Seitenrouting definieren (Pfad, Komponente)
exportiere standardmäßig einen neuen Router({
    { Pfad: '/foo', Komponente: () => import('/pages/foo') }, // Routing-Komponente Lazy Loading { Pfad: '/bar', Komponente: '/pages/bar'}
})
// Haupt.js
Router aus „./router.js“ importieren
neuer Vue({
  el: '#app',
  Router, // Mounten Sie die Route zur Vue-Instanz render: h => h(App)
})

// Seite.vue
<!-- Es ist wichtig, die Beziehung zwischen den beiden zu unterscheiden -->
this.$router // Zugriff auf den Router, integrierte Push- und Replace-Routingmethoden this.$route // Zugriff auf die aktuelle Route, den integrierten Pfad, die Abfrage und andere Routingattribute // app.vue
<!-- Komponenten, die mit der Route übereinstimmen, werden hier gerendert-->
<Router-Ansicht></Router-Ansicht>

6.2 Streckenführung

Deklaratives Routing

<router-link :to="...">
<router-link :to="..." ersetzen>

Programmatisches Routing

this.$router.push({ Pfad: 'registrieren', Abfrage: { Plan: 'privat' }})
this.$router.replace(...) // Der Unterschied zu Push besteht darin, dass keine Verlaufsdatensätze eingefügt werden. this.$router.go( [Number] n ) // Wie viele Schritte vorwärts oder rückwärts im Verlaufsdatensatz // Wenn der Routenparameter Chinesisch enthält, wird empfohlen, ihn zuerst mit encodeURLComponent zu transkodieren, um verstümmelte Zeichen zu vermeiden.

6.3 Routing-Wächter

Globale Wache

Es wirkt sich auf alle konfigurierten Routen aus, hat jedoch eine niedrigere Priorität als interne Routen.

Globaler Frontschutz (häufig verwendet)

// Weiterleitung zu /login, wenn die Authentifizierung des Benutzers fehlschlägt
router.beforeEach((bis, von, weiter) => {
  // to ist das einzugebende Routenobjekt, from ist die Quellroute, next ist die Hook-Funktion, ob freigegeben werden soll, if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' })
  sonst weiter()
})

Globaler Parsing-Guard (verstehen)

router.beforeResolve((zu, von, weiter) => {
  // ...
})

Globaler Post-Hook (Verständnis)

router.afterEach((bis, von) => {
  // Dieser Routenwächter akzeptiert die nächste Hook-Funktion nicht // ...
})

Exklusiver Routerschutz (verstehen)

Dieser Guard ist nur für die konfigurierten Routen wirksam. Diese Guards haben die gleichen Methodenparameter wie der globale Front Guard.

const router = neuer VueRouter({
  Routen: [
    {
      Pfad: '/foo',
      Komponente: Foo,
      beforeEnter: (bis, von, weiter) => {
        // ...
      }
    }
  ]
})

Interner Schutz der Komponente (Verständnis)

Die folgenden Routennavigationsschutzfunktionen können direkt in der Routenkomponente definiert werden und wirken sich nur auf die aktuelle Komponente aus.

vorRouteEnter
beforeRouteUpdate (neu in 2.2)
vorRouteVerlassen


Schutzmechanismen in Komponenten | Offizielle Vue-Router-Dokumentation

7. Staatsmanager Vuex

7.1 Konfiguration

//store.js
Vue von „vue“ importieren
Vuex von „vuex“ importieren

Vue.Verwenden(Vuex)
...

exportiere standardmäßig neuen Vuex.Store({
  Zustand,
  Getter,
  Mutationen,
  Aktionen,
  Module
})
// Haupt.js
Store aus „./store“ importieren

Vue.prototype.$store = speichern

8. Fünf Kernattribute

Zustand

Datenquelle, ändern Sie den Status nicht direkt

//store.js
konstanter Zustand = {
    Name: 'zzz'
}

<!--page.vue-->
// 1. Rufen Sie direkt this.$store.state.name auf // 'zzz'
// 2. Hilfsfunktionsmapping berechnet: {
    ...mapState(['name'])
}
dieser.name // 'zzz' 

Mutationen

Der einzige Weg, den Zustand zu ändern

const Mutationen = {
    updateName(status, neuerName) {
        state.name = neuerName
    }
}

<!--page.vue-->
// 1. Rufen Sie this.$store.commit(updateName, 'zzh') direkt auf // state.name: 'zzh'
// 2. Methoden zur Zuordnung von Hilfsfunktionen: {
    ...mapMutations(['updateName'])
}
this.updateName('zzh') // Status.Name: 'zzh'

Aktionen

Speichern Sie asynchrone Operationen und lösen Sie asynchron Mutationen aus, um den Status zu ändern.

const Aktionen = {
    asyncUpdateName(Kontext) {
        // Asynchroner Vorgang, z. B. das Einleiten einer HTTP-Anforderung zum Abrufen des aktualisierten Namens, vorausgesetzt, Name=xxx
        ...
        Kontext.commit('Updatename', Res.name) // Status.name: 'xxx'
    }
}

<!--page.vue-->
// 1. Rufen Sie this.$store.dispatch(asyncUpdateName) direkt auf
// 2. Methoden zur Zuordnung von Hilfsfunktionen: {
    ...mapActions(['asyncUpdateName'])
}
dies.asyncUpdateName()

Getter

Datenquellenverarbeitung, ähnlich wie berechnete Eigenschaften

const getter = {
    formatName(Staat) {
        Rückgabewert: Staat.Name + '2021'
    }
}

<!--page.vue-->
// 1. Rufen Sie direkt this.$store.getter.formatName() auf // 'xxx2021'
// 2. Hilfsfunktionsmapping berechnet: {
    ...mapGetters(['formatName'])
}
dies.formatName() // // 'xxx2021'

Module

Durch die Modularisierung kann jedes Modul seinen eigenen Satz an Zuständen, Mutationen, Aktionen und Gettern verwalten.

// Innerhalb des Moduls this.$store.state.name // Für den internen Zugriff wird kein Namespace benötigt. // Außerhalb des Moduls this.$store.state.login.name // login ist der Namespace des Moduls …
Andere Eigenschaften sind ähnlich

Module|Offizielle Vuex-Dokumentation

9. HTTP-Anforderungsbibliothek Axios

HTTP-Anforderungsbibliothek basierend auf Promise-Kapselung, offiziell empfohlen

<!-- api.js -->
Axios von „Axios“ importieren

// Erstellen und konfigurieren Sie eine Instanz axios.create({
    baseURL: „http://www.baidu.com“, // Timeout der Anforderungsbasisadresse: 1000 // Anforderungs-Timeout …
})

//Abfangjäger anfordern axios.interceptors.request.use(request => {
    request.headers['Inhaltstyp'] = 'Anwendung/json'
    ...
})
// Antwort-Interceptor axios.interceptors.response.use(response => {
    ...
    Antwortdaten zurückgeben
})
//Anforderungsexportstandard konfigurieren {
    getId: () => axios.get('/getId'),
    getNameById: id => axios.post('/getNameById', id)
}

<!-- main.js -->
API aus „./api.js“ importieren

Vue.prototype.$api = api
<!-- Seite.vue -->
dies.$api.getId().then(res => {
    ...
}).fangen()

Dies ist das Ende dieses ausführlichen Artikels über die Grundlagen von Vue 2.0. Weitere relevante Inhalte zu den Grundlagen von Vue 2.0 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:
  • Vue2.0 praktische Grundlagen (1)
  • Beispiel für handschriftliches Vue2.0-Daten-Hijacking
  • So implementieren Sie Seiten-Caching und Nicht-Caching in Vue2.0
  • Vue2.0 erhält Daten aus der HTTP-Schnittstelle, der Komponentenentwicklung und den Routing-Konfigurationsmethoden
  • Vue2.0 + SVG realisiert die kreisförmige Fortschrittsbalkenkomponente der Musikwiedergabe
  • Vue2.0 implementiert einfache Paging- und Sprungeffekte

<<:  Mit CSS3 lässt sich ein umdrehbarer Hover-Effekt erzielen

>>:  Webdesign: Implementierungstechniken für Webmusik

Artikel empfehlen

Wie MySQL Milliarden von Datenverkehr unterstützt

Inhaltsverzeichnis 1 Master-Slave-Lese-/Schreibtr...

Wichtige Updates für MySQL 8.0.23 (neue Funktionen)

Autor: Guan Changlong ist DBA in der Delivery Ser...

Beispielcode zur Implementierung einer einfachen Suchmaschine mit MySQL

Inhaltsverzeichnis Vorwort Einführung Ngram-Vollt...

Implementierung von Nginx-Weiterleitungsübereinstimmungsregeln

1. Regulärer Ausdrucksabgleich ~ für Groß- und Kl...

Methode zum Erkennen, ob IP und Port verbindbar sind

Windows cmd Telnet Format: Telnet-IP-Port Fall: T...

CSS-Ansichtsfenstereinheiten für schnelles Layout

CSS-Viewport-Einheiten gibt es schon seit einigen...

Tutorial zur Verwendung von Profilen in MySQL

Was ist ein Profil? Wir können es verwenden, wenn...