Beispiel-Tutorial zur Verwendung und Entwicklung von Vue.js-Komponenten
高洛峰
Freigeben: 2016-12-08 11:57:38
Original
1386 Leute haben es durchsucht
Komponenten
Komponenten können HTML-Elemente erweitern und wiederverwendbaren Code kapseln. Auf hoher Ebene sind Komponenten benutzerdefinierte Elemente, und der Compiler von vue.js fügt ihm in einigen Fällen spezielle Funktionen hinzu auch in Form von nativen HTML-Elementen vorliegen, erweitert um das Attribut is.
Vue.js-Komponenten können als ViewModel-Klassen mit vordefinierten Verhaltensweisen verstanden werden. Eine Komponente kann viele Optionen vordefinieren, die wichtigsten sind jedoch die folgenden:
Vorlage (Vorlage): Die Vorlage deklariert die Zuordnungsbeziehung zwischen den Daten und dem DOM, die letztendlich dem Benutzer angezeigt wird.
Anfangsdaten (Daten): der anfängliche Datenzustand einer Komponente. Bei wiederverwendbaren Komponenten ist dies normalerweise der private Status.
Externe Parameter (Requisiten) akzeptiert: Daten werden über Parameter übertragen und zwischen Komponenten geteilt. Parameter sind standardmäßig unidirektional (von oben nach unten) gebunden, können aber auch explizit bidirektional deklariert werden.
Methoden: Änderungsvorgänge an Daten werden im Allgemeinen innerhalb der Methoden von Komponenten durchgeführt. Benutzereingabeereignisse und Komponentenmethoden können über die v-on-Direktive gebunden werden.
Lebenszyklus-Hooks: Eine Komponente löst mehrere Lifecycle-Hook-Funktionen aus, z. B. erstellt, angehängt, zerstört usw. In diesen Hook-Funktionen können wir eine benutzerdefinierte Logik einkapseln. Im Vergleich zu herkömmlichem MVC ist es verständlich, dass die Logik des Controllers auf diese Hook-Funktionen verteilt ist.
Private Ressourcen (Assets): In Vue.js werden benutzerdefinierte Anweisungen, Filter, Komponenten usw. zusammenfassend als Ressourcen bezeichnet. Da global registrierte Ressourcen leicht zu Namenskonflikten führen können, kann eine Komponente ihre eigenen privaten Ressourcen deklarieren. Private Ressourcen können nur von der Komponente und ihren Unterkomponenten aufgerufen werden.
Darüber hinaus können Komponenten innerhalb desselben Komponentenbaums auch über die integrierte Ereignis-API kommunizieren. Vue.js bietet eine vollständige API zum Definieren, Wiederverwenden und Verschachteln von Komponenten, sodass Entwickler Komponenten verwenden können, um die gesamte Anwendungsschnittstelle wie Bausteine zu erstellen.
Komponenten verbessern die Effizienz, Wartbarkeit und Wiederverwendbarkeit von Code erheblich.
Mit Komponente registrieren
1 Erstellen Sie einen Komponentenkonstruktor:
var MyComponent = Vue.extend({
//选项
})
Nach dem Login kopieren
2 . Verwenden Sie den Konstruktor als Komponente und registrieren Sie ihn bei Vue.component(tag,constructor):
Vue.component('my-component',MyComponent)
Nach dem Login kopieren
3. Im Modul der übergeordneten Instanz , verwenden Sie self. Definieren Sie das Element in der Form:
<div id = "example">
<my-component></my-component>
</div>
<div id = "example">
<div>A custom component!</div>
</div>
Nach dem Login kopieren
Die Vorlage der Komponente ersetzt das benutzerdefinierte Element, das nur als dient Befestigungspunkt. Mithilfe der Instanzoption „replace“ können Sie entscheiden, ob eine Ersetzung durchgeführt werden soll.
Lokale Registrierung
Registrierung mit den Instanzoptionskomponenten. Es ist nicht erforderlich, jede Komponente global zu registrieren. Sie können die Komponente nur in anderen Komponenten verwenden:
Die meisten an den Vue-Konstruktor übergebenen Optionen können dies auch tun Wenn Sie in Vue.extend() zusätzlich zu data und el einfach ein Objekt als Datenoption an Vue.extend() übergeben, teilen sich alle Instanzen dasselbe Datenobjekt, daher sollten wir eine Funktion als verwenden Datenoption. Lassen Sie diese Funktion ein neues Objekt zurückgeben:
var MyComponent = Vue.extend({
data: function () {
return { a: 1 }
}
})
Nach dem Login kopieren
Template-Parsing
Vues Vorlage ist eine DOM-Vorlage, die das verwendet Der native Template-Parser des Browsers muss daher ein gültiges HTML-Fragment sein. Einige HTML-Elemente unterliegen Einschränkungen hinsichtlich der Elemente, die darin platziert werden können:
a darf keine anderen interaktiven Elemente enthalten (z. B. Schaltflächen, Links). )
ul und ol können li nur direkt enthalten
select kann nur option und optgroup enthalten
table kann nur thead, tbody, tfoot, tr, caption, col direkt enthalten , colgroup
tr kann nur th und td direkt enthalten
In der Praxis können diese Einschränkungen zu unerwarteten Ergebnissen führen. Obwohl es in einfachen Fällen funktionieren kann, können Sie sich nicht auf das Ergebnis der Erweiterung einer benutzerdefinierten Komponente verlassen, bevor der Browser sie validiert. Beispielsweise ist
keine gültige Vorlage, auch wenn die my-select-Komponente irgendwann erweitert wird .
Ein weiteres Ergebnis ist, dass benutzerdefinierte Tags (einschließlich benutzerdefinierter Elemente und spezieller Tags wie , , ) nicht innerhalb von UL-, Select-, Table- usw. Elementen verwendet werden können liegen innerhalb eingeschränkter Tags. Benutzerdefinierte Tags, die in diesen Elementen platziert werden, werden aus dem Element herausgehoben und falsch gerendert.
Für benutzerdefinierte Elemente sollte das is-Attribut verwendet werden:
Der Bereich der Komponenteninstanz ist isoliert. Sie können Requisiten verwenden, um das Array an die untergeordnete Komponente zu übergeben um von der übergeordneten Komponente an die untergeordnete Komponente übergeben zu werden. Sie müssen props explizit mit der props-Option deklarieren:
Vue.component('activate-example', {
activate: function (done) {
var self = this
loadDataAsync(function (data) {
self.someData = data
done()
})
}
})
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