1. Grundlage des Responsive-Prinzips Das Grundprinzip der Reaktionsfähigkeit basiert auf Erweiterung: Das Obige ist das grundlegende Reaktionsprinzip von vue2.0. Das Grundprinzip von vue3.0 ist Proxy, das die Abruf- und Festlegungsmethoden von Attributen überwachen, das Hinzufügen und Löschen von Attributen überwachen usw. kann. Es ist leistungsfähiger als Object.defineProperty, aber nicht mit IE11 kompatibel. 2. Kernobjekte: Dep und Watcher 1. Berechnete Eigenschaften, definiert in „Berechnet“. 2. Die in Watch geschriebene Überwachungsfunktion; 3. Komponenten-Rendering-Watcher; 3. Abhängigkeiten sammeln und aktualisieren3.1 Abhängigkeiten erfassenVerteilen Sie das Watcher-Instanzobjekt w an die Dep des Attributs, von dem es abhängt. Der Prozess läuft wie folgt ab: 1. Setze Dep.target = das Instanzobjekt w des aktuellen Beobachters; 2.w führt die definierte Funktion aus (d. h. die in computed/watch geschriebene Funktion); 3. Wenn das in den Daten definierte Attribut während des Funktionsausführungsprozesses verwendet wird, wird die Get-Methode des Attributs ausgelöst. In der Get-Methode fügt das Dep-Instanzobjekt dep das in Dep.target gespeicherte w in das Array dep.subs ein, um die Abhängigkeitssammlung zu vervollständigen. Hinweis: Dep.target ist das Instanzobjekt des aktuellen Watcer 3.2 Update-AbhängigkeitenWenn wir eine von uns deklarierte Eigenschaft ändern, wird die Set-Methode der Eigenschaft ausgelöst. Die Set-Methode aktualisiert die im Array dep.subs gesammelten Watcher-Instanzobjekte, d. h. sie löst die in computed und watch definierten Funktionen aus. 4. Quellcode-Debugging4.1 Testseitencode<Vorlage> <div> <div>ein:<Eingabe v-Modell="ein" /></div> <div>c:{{ c }}</div> <div>b:<Eingabe v-Modell="b" /></div> </div> </Vorlage> <Skript> Standard exportieren { Daten: () => { zurückkehren { A: '', B: '' } }, berechnet: { C() { gib 'Quelle von ' + this.a zurück; } }, betrachten: B() { console.log('b geändert'); } } }; </Skript> Der obige Code generiert nach der Initialisierung von Vue die folgenden Objekte: 1. Objektbeschreibung Dep-Instanzobjekte, die den Attributen a und b entsprechen (Sammeln von Watchern, die aktualisiert werden müssen, wenn sich a und b ändern): Die Seiten-Rendering-Funktion generiert das entsprechende Watcher-Instanzobjekt Die berechnete Eigenschaft c generiert das entsprechende Watcher-Instanzobjekt: Das Watch-Listener-Attribut b generiert das entsprechende Watcher-Instanzobjekt: 2. Beziehung zwischen Dep und Watcher Die Seite muss neu gerendert werden, wenn sich a und b ändern, daher ist Die berechnete Eigenschaft c hängt von der Änderung der Eigenschaft a ab, daher existiert Änderungen in b lösen die Abhörfunktion von b in der Definition von watch aus, sodass 3. Endgültiges Ergebnis der Beziehung Die endgültige Eigenschaft „a“ sammelt Abhängigkeiten: Die endgültige Eigenschaft b sammelt Abhängigkeiten 4.2 Quellcode-Debugging Suchen Sie die Quelldatei: Dabei handelt es sich im Wesentlichen um folgende Funktionen: 1. Sammlungsabhängige Eintragsfunktion: initState (wird ausgeführt, wenn die Seite initialisiert wird);Die Initialisierungsreihenfolge ist Daten-->Berechnet-->Überwachen. Der Grund hierfür ist, dass „Berechnet“ von den Daten abhängt und „Überwachen“ von den Daten und dem Überwachen. Daher müssen die abhängigen Elemente zuerst initialisiert werden. 2. Generieren Sie beim Initialisieren von berechneten und überwachten Objekten Watcher-InstanziierungsobjekteFühren Sie zuerst die Funktion Watcher.get aus und setzen Sie Dep.target = das aktuelle Watcher-Instanziierungsobjekt Auslösen der Sammlung von Abhängigkeiten Führen Sie die Funktion in der berechneten Eigenschaft aus. Wenn auf eine Eigenschaft in Daten zugegriffen wird, wird die Get-Methode der Dateneigenschaft ausgelöst, wodurch die Abhängigkeitssammlung ausgelöst wird: Wenn diese Eigenschaft geändert wird, wird die Set-Methode ausgelöst, die die Aktualisierung des Watcher-Objekts in dep.subs auslöst. Abschließend wird die Update-Funktion des Watchers angestoßen und der zu aktualisierende Watcher in die Warteschlange gestellt: ZusammenfassenDieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können! Das könnte Sie auch interessieren:
|
<<: Informationen zur Bildlaufleiste in HTML/Bildlaufleiste entfernen
>>: Beispiel für die Verwendung von @media responsive CSS zur Anpassung an verschiedene Bildschirme
In diesem Artikelbeispiel wird der spezifische Co...
*** Beispiel für das Festlegen des Stils eines Hy...
Inhaltsverzeichnis Hafenbezogene Konzepte: Bezieh...
1. Fortsetzen nacos-Datenbank Datenbankname nacos...
1. Was ist ein Servlet 1.1. Erklären Sie in offiz...
Alibaba Cloud kauft Server Kaufen Sie einen Cloud...
Inhaltsverzeichnis Allgemeine Schlüsselaliase Sch...
Sinnvolle Einstellung des MySQL sql_mode sql_mode...
MySQL-Abfragedaten aus einer Tabelle und Einfügen...
Wie wir alle wissen, können wir in Linux ohne den...
1. Überprüfen Sie die Kali-Linux-Systemversion Be...
Voraussetzung: Mac, zsh installiert, mysql herunt...
Hintergrund In letzter Zeit werde ich in Intervie...
Der Unterschied zwischen http und https ist Bei m...
In diesem Artikel wird der spezifische JavaScript...