DOM ist ein Dokumentobjektmodell und eine Schnittstelle für die HTML-Programmierung. Elemente auf der Seite werden über DOM manipuliert. Das DOM ist eine speicherinterne Objektdarstellung eines HTML-Dokuments und bietet eine M?glichkeit, mithilfe von JavaScript mit Webseiten zu interagieren. Das DOM ist eine Hierarchie (oder ein Baum) von Knoten mit dem Dokumentknoten als Wurzel.
Die Betriebsumgebung dieses Tutorials: Windows7-System, Vue3-Version, DELL G3-Computer.
Was ist Dom? Dom ist ein Dokumentobjektmodell und eine Schnittstelle für die HTML-Programmierung. Sie k?nnen Dom zum Bedienen von Elementen auf der Seite verwenden. Wenn eine HTML-Seite geladen wird, erstellt der Browser ein DOM, das dem Dokument eine neue logische Struktur verleiht und den Inhalt und die Struktur ?ndern kann. DOM wird als Document Object Model (kurz DOM) bezeichnet und ist eine von der W3C-Organisation empfohlene Standardprogrammierschnittstelle zur Verarbeitung erweiterbarer Auszeichnungssprachen.
DOM ist eine speicherinterne Objektdarstellung eines HTML-Dokuments Bietet Interaktion mit Webseiten mithilfe von JavaScript. Das DOM ist eine Hierarchie (oder ein Baum) von Knoten mit dem Dokumentknoten als Wurzel.
Tats?chlich ist DOM ein Dokumentmodell, das objektorientiert beschrieben wird. Das DOM definiert die Objekte, die zum Darstellen und ?ndern eines Dokuments erforderlich sind, das Verhalten und die Eigenschaften dieser Objekte sowie die Beziehungen zwischen diesen Objekten.
Mit JavaScript k?nnen wir das gesamte HTML-Dokument rekonstruieren. Zum Beispiel das Hinzufügen, Entfernen, ?ndern oder Neuanordnen von Elementen auf der Seite.
Um etwas auf der Seite zu ?ndern, muss JavaScript Zugriff auf alle Elemente im HTML-Dokument erhalten. Dieser Eintrag wird zusammen mit den Methoden und Eigenschaften zum Hinzufügen, Verschieben, ?ndern oder Entfernen von HTML-Elementen über das Document Object Model abgerufen.
Was ist virtuelles DOM? Ich glaube, jeder kennt das Konzept des virtuellen DOM. Von React bis Vue bietet virtuelles DOM plattformübergreifende Funktionen für beide Frameworks (React-Native und Weex).
Tats?chlich Es handelt sich lediglich um eine Abstraktionsebene des realen DOM. Es verwendet JavaScript-Objekte (VNode-Knoten) als Basis des Baums und verwendet die Eigenschaften des Objekts, um die Knoten zu beschreiben. Schlie?lich kann dieser Baum dem realen zugeordnet werden DOM durch eine Reihe von Operationen. Aus ?kologischer Sicht wird das virtuelle DOM in Javascript-Objekten als Objektobjekt dargestellt. Und es enth?lt mindestens drei Attribute: Tag-Name (Tag), Attribute (Attrs) und untergeordnete Elementobjekte (Children). Verschiedene Frameworks k?nnen unterschiedliche Namen für diese drei Attribute haben. Der Zweck der Erstellung eines virtuellen DOM besteht darin, virtuelle Knoten besser zu integrieren. In der Seitenansicht gerendert, sodass die Knoten des virtuellen DOM-Objekts nacheinander den Eigenschaften des realen DOM entsprechen. Definieren Sie das reale DOMrrreeDurch VNode kann in diesem abstrakten Baum Knoten erstellen, Knoten l?schen und Knoten ?ndern. Mithilfe des Diff-Algorithmus k?nnen wir einige Mindesteinheiten ermitteln, die ge?ndert werden müssen, und dann die Ansicht aktualisieren, wodurch die Leistung verbessert wird.
Mehrere Methoden für Vue, um DOM zu erhalten
Obwohl Vue das MVVM-Modell implementiert und Daten und Leistung trennt, müssen wir nur die Daten aktualisieren, um das DOM synchron zu aktualisieren. In einigen F?llen ist dies jedoch immer noch erforderlich Erhalten Sie DOM-Elemente für den Betrieb (z. B. erfordert eine eingeführte Bibliothek die übergabe eines Root-DOM-Elements als Root-Knoten oder das Schreiben einiger benutzerdefinierter Anweisungen. In diesem Artikel werden haupts?chlich verschiedene Methoden zum Abrufen von DOM-Elementen in Vue vorgestellt.
Verwenden Sie die DOM-API, um das Element direkt zu finden<div id="app"> <p class="p">節(jié)點(diǎn)內(nèi)容</p> <h3>{{ foo }}</h3> </div>
Diese Methode ist einfach und intuitiv genug. Am Ende der Patch-Phase weist die Vue-Komponente this.$el
zu Als gemountetes Root-Dom-Element k?nnen wir $el
s querySelector, querySelectorAll
und andere Methoden direkt verwenden, um passende Elemente zu erhalten.
refs
const app = new Vue({ el:"#app", data:{ foo:"foo" } })Verwenden Sie die
$refs
der Komponenteninstanz, um das Attribut ref
zu erhalten das der Komponente entsprechende Element. Wenn das ref-Attribut zu einer Komponente hinzugefügt wird, erhalten Sie die Instanz dieser Komponente, andernfalls erhalten Sie das DOM-Element. Es ist erw?hnenswert, dass, wenn die Schleifenvorlagenanweisung
v-for
enthalten ist, das Attribut ref
auf dem Schleifenelement und dem Unterelement einem Array entspricht (auch wenn ref wird dynamisch generiert, auch ein Array): (function anonymous( ) { with(this){return _c('div',{attrs:{"id":"app"}},[_c('p',{staticClass:"p"}, [_v("節(jié)點(diǎn)內(nèi)容")]),_v(" "),_c('h3',[_v(_s(foo))])])}})Der Grund dafür kann Vues Teil des Codes zur Ref-Verarbeitung entnommen werden:
<script> ... mounted () { let elm = this.$el.querySelector('#id') } </script>
Benutzerdefiniert verwenden AnweisungenVue bietet für benutzerdefinierte Anweisungen das offizielle Dokument die folgende Verwendungsmethode, wobei el
ein Verweis auf das Dom-Element ist
<template> <div ref="bar">{{ foo }}</div> <MyAvatar ref="avatar" /> ... </template> <script> ... mounted () { let foo = this.$refs['bar'] // 一個(gè)dom元素 let avatar = this.$refs['avatar'] // 一個(gè)組件實(shí)例對(duì)象 } </script>
In Bezug auf benutzerdefinierte Anweisungen ist es in einigen Komponentenbibliotheken sehr nützlich und Ereignisberichtsszenarien. this.$el
賦值為掛載的根dom元素,我們可以直接使用$el
的querySelector, querySelectorAll
等方法獲取匹配的元素。
<template> <div v-for="item in qlist" :key="item.id" ref="qitem"> <h3>{{ item.title }}</h3> <p ref="pinitem">{{ item.desc }}</p> <p :ref="'contact'+item.id">{{ item.contact }}</p> </div> ... </template> <script> ... data () { return { qlist: [ { id: 10032, title: 'abc', desc: 'aadfdcc', contact: 123 }, { id: 11031, title: 'def', desc: '--*--', contact: 856 }, { id: 20332, title: 'ghi', desc: '?/>,<{]', contact: 900 } ] } }, mounted () { let foo = this.$refs['qitem'] // 一個(gè)包含dom元素的數(shù)組 let ps = this.$refs['pinitem'] // p元素是v-for的子元素,同樣是一個(gè)數(shù)組 let contact1 = this.$refs['contact' + this.qlist[0].id] // 還是個(gè)數(shù)組 } </script>
使用組件實(shí)例的$refs
即可拿到組件上ref
屬性對(duì)應(yīng)的元素。
如果ref屬性加在一個(gè)組件上,那么拿到的是這個(gè)組件的實(shí)例,否則拿到的就是dom元素了。
值得注意的是包含v-for
循環(huán)模板指令的情況,其循環(huán)元素和子元素上ref
屬性對(duì)應(yīng)的都是一個(gè)數(shù)組(就算動(dòng)態(tài)生成ref,也是數(shù)組):
function registerRef (vnode, isRemoval) { var key = vnode.data.ref; if (!isDef(key)) { return } var vm = vnode.context; // vnode如果有componentInstance表明是一個(gè)組件vnode,它的componentInstance屬性是其真實(shí)的根元素vm // vnode如果沒有componentInstance則不是組件vnode,是實(shí)際元素vnode,直接取其根元素 var ref = vnode.componentInstance || vnode.elm; var refs = vm.$refs; if (isRemoval) { ... } else { // refInFor是模板編譯階段生成的,它是一個(gè)布爾值,為true表明此vnode在v-for中 if (vnode.data.refInFor) { if (!Array.isArray(refs[key])) { refs[key] = [ref]; // 就算元素唯一,也會(huì)被處理成數(shù)組 } else if (refs[key].indexOf(ref) < 0) { // $flow-disable-line refs[key].push(ref); } } else { refs[key] = ref; } } }
關(guān)于這個(gè)的原因,可以從Vue關(guān)于ref處理的部分代碼得到:
Vue.directive('focus', { // 當(dāng)被綁定的元素插入到 DOM 中時(shí)…… inserted: function (el) { // 聚焦元素 el.focus() } }) // 在模板中 <template> <input v-model="name" v-focus /> </template>
Vue提供了自定義指令,官方文檔給出了如下的使用方法,其中el
vuejs-Video-Tutorial
,Web-Front-End-Entwicklung】
Das obige ist der detaillierte Inhalt vonWas bedeutet vue dom?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Reaktivit?tsformInvue3AMEDTosimplifyStellingRectiveAtaTAnyautomatic -TrackingAnagingRiftingRifting -Wirklichkeit mit

Internationalisierung undLokalisationInvueAppsAprimal-HandleDusedthevuei18nPlugin.1.Installvue-i18nvianpMoryarn.2.CreatelocalejsonFiles (z

Server-Siderenderering (SSR) InvueimerProveSperformanceAndSoBygeneratingHtmlontheserver

Um eine VUE -Komponentenbibliothek zu erstellen, muss die Struktur rund um das Gesch?ftsszenario gestaltet werden und dem vollst?ndigen Entwicklungs-, Testen- und Freigabungsprozess folgen. 1. Das strukturelle Design sollte nach Funktionsmodulen klassifiziert werden, einschlie?lich grundlegender Komponenten, Layoutkomponenten und Gesch?ftskomponenten. 2. Verwenden Sie SCSS- oder CSS -Variablen, um das Thema und den Stil zu vereinen. 3.. Vereinen Sie die Namenspezifikationen und führen Sie Eslint und sch?ner ein, um den konsistenten Codestil zu gew?hrleisten. V. 5. Verwenden Sie Vite und andere Tools, um als NPM -Pakete zu packen und Rollupoptions zu konfigurieren. 6. Befolgen Sie die SEMVER -Spezifikation, um Versionen und ChangeLogs beim Ver?ffentlichen zu verwalten.

ToaddtransitionSandanimationInvue, Anwendungseingebungen, Anwendungen, LeveragetransitionhooksforControl und optimizeperformance.1.WrapelementsWitHandApplycsstransitionClasses wie unein- und aktiv-activeBasicfacefade-Lideffeekts.2.

NextTick wird in Vue verwendet, um Code nach DOM -Update auszuführen. Wenn sich die Daten ?ndert, aktualisiert VUE das DOM nicht sofort, sondern stellt ihn in die Warteschlange ein und verarbeitet es in der n?chsten Ereignisschleife "Tick". Wenn Sie also auf das aktualisierte DOM zugreifen oder bedienen müssen, sollte NextTick verwendet werden. Zu den gemeinsamen Szenarien geh?ren: Zugriff auf den aktualisierten DOM-Inhalt, die Zusammenarbeit mit Bibliotheken von Drittanbietern, die sich auf den DOM-Zustand verlassen, und berechnen basierend auf der Elementgr??e; Die Nutzung beinhaltet das Aufrufen. Zu den Vorsichtsma?nahmen geh?ren: Vermeidung überm??iger Verwendung, in den meisten F?llen ist keine manuelle Ausl?ser erforderlich, und ein NextTick kann gleichzeitig mehrere Updates erfassen.

1. Die erste Wahl für die Kombination aus Laravel Mysql Vue/React in der PHP -Entwicklungsfrage und der Antwortgemeinschaft ist die erste Wahl für die Kombination aus Laravel Mysql Vue/React aufgrund ihrer Reife im ?kosystem und der hohen Entwicklungseffizienz; 2. Die hohe Leistung erfordert Abh?ngigkeit von Cache (REDIS), Datenbankoptimierung, CDN und asynchronen Warteschlangen; 3. Die Sicherheit muss mit Eingabefilterung, CSRF -Schutz, HTTPS, Kennwortverschlüsselung und Berechtigungssteuerung erfolgen. V.

Bei der Entwicklung von VUE-Anwendungen umfassen gemeinsame Anti-Muster: 1. Beim Umgang mit komplexer Logik in der Vorlage sollte die Logik auf Methoden oder berechnet werden; 2. Missbrauch von V-IF und V-Show, und die Auswahl sollte vernünftigerweise auf der Schaltfrequenz basieren. 3. Die direkte Indexierung, um das Array zu ?ndern oder Objektattribute hinzuzufügen, um die Reaktionsf?higkeit zu zerst?ren, und die Mutationsmethode oder die $ -Spreis sollte verwendet werden. V. 5. In falscher Nutzung von Lebenszyklus -Haken sollte auf die Verantwortlichkeiten in jeder Phase und die Nebenwirkungen der Reinigung aufmerksam gemacht werden.
