Inhaltsverzeichnis
1. Der in mvvm enthaltene Mindestinhalt
2. Meine Implementierung
1. Definition von Variablen und Implementierung der Uhr
2. Definition der Anweisungen
3 🎜 >
Heim Web-Frontend js-Tutorial Lernen und verstehen Sie gemeinsam den Vue-Quellcode

Lernen und verstehen Sie gemeinsam den Vue-Quellcode

Jun 26, 2017 am 09:50 AM
源码 理解

Laut der offiziellen Website von Vue können wir wissen, dass Vue ein MVVM-Framework ist und reagiert. Um die Bedeutung besser zu verstehen, habe ich eine einfache MVVM-Lerndemo implementiert. Teilen Sie es unten mit allen und laden Sie alle ein, darüber zu diskutieren.

1. Der in mvvm enthaltene Mindestinhalt

  1. Befehlssatz, wie zum Beispiel: Text, Modell usw.

  2. Datenmodell und Interaktionsdaten anzeigen

  3. Komponentenunterstützung: Das heißt, dynamische Aktualisierung eines Teils des HTML-Codes

2. Meine Implementierung

1. Definition von Variablen und Implementierung der Uhr

var directives = {}; //指令集合var vNodes = new Array(); //解析的Dom集合var dataModel = {
    name:"name",
    title: "title"}; //数据Modelvar Watch = {
    isInit: false,
    watchs: new Array(),
    run: function(newValue, expOrfn){ var self = this;if(!self.isInit){
            expOrfn.call(vModel);
        }this.watchs.map(function(data,index){
            data.nodes.map(function(d,i){if(self.isInit){
                    d.directive.init(newValue, d, data); //绑定初始化值, 以及初始化一些事件}else{
                    d.directive.update(newValue, d, data); //只更新值,此时run的调用来值value-set                }
            });
        });
        
        self.watchs = [];
    },
    push:function(watch){this.watchs.push(watch);
    }
} //任务管理
Nach dem Login kopieren

Erklärung:

  1. Watch Die Push-Methode wird zum Hinzufügen von Abhängigkeiten verwendet und anschließend ausgeführt, um alle Abhängigkeiten auszuführen. Nach Abschluss der Ausführung muss die aktuelle Abhängigkeitssammlung bereinigt werden. Die Sammlung von Abhängigkeiten in Vue wird in Dep abgeschlossen und die Aufgabenverwaltung wird von Watch bereitgestellt (Ich weiß nicht, ob ich es richtig verstehe)

2. Definition der Anweisungen

directives.text = { 
    init: function(value, vNode){
        vNode.elm.textContent = value;
    },
    update: function(value, vNode){
        vNode.elm.textContent = value;
    }
}//需要响应事件的怎么办directives.model ={ 
    init: function(value, vNode, _watch){
        vNode.elm.value = value; //判断自己发生的改变,不应该再改变自己 vNode.elm.addEventListener('keyup',function(evt){
            vNode.model[_watch.key] = vNode.elm.value;
        }); 
    },
    update:function(){

    }   
}
Nach dem Login kopieren

Beschreibung:

  1. Da es sich um ein Demo-Lernbeispiel handelt, nur einfacher Text und Modell sind definiert, Text: wird für die Datenanzeige verwendet und Modell wird für die Eingabe (Eingabefeld)-Antwort verwendet

3 🎜 >

Hinweis:
//转换vModel,暂支持一级var properties = Object.getOwnPropertyNames(dataModel);var vModel = {}, formSetting = false;for( var index in properties){ 
    (function refreshData(_index){var key = properties[_index];var property = Object.getOwnPropertyDescriptor(dataModel, key);var setter = property.set;var getter = property.get;var _val = property.value;var _getter = function(){var val = getter ? getter.call(vModel) : _val;//收集依赖,与watch要分开            Watch.push({
                key: key,
                nodes: vNodes.filter(function(data,index){return data.modelKey == key ? true : false;
                }),
                getter: _getter
            });return val;
        };
        Object.defineProperty(vModel, key, {
            configurable: true,
            enumerable: true,
            set: function(value){if(setter){
                    setter.call(vModel, value);
                } //处理依赖                Watch.run(value, _getter);//this.value = value;            },
            get: _getter

        })
    })(index);
}
Nach dem Login kopieren

vModel wird basierend auf dataModel generiert, dh die Get- und Set-Methoden jedes Attributs werden angepasst, was auch mithilfe eines Proxys in es6 implementiert werden kann (

    Hast du recht?
  1. ). Beim Festlegen eines Attributs wird zuerst die get-Methode aufgerufen, um Abhängigkeiten zu sammeln. Nachdem der Komfortwert geändert wurde, können alle betroffenen Inhalte geändert werden.

  2. 4. Dom als vNode analysieren

Anleitung:
//解析vNodesvar app = document.getElementById('app');
app.childNodes.forEach(function(data,index){if(data.nodeType != 1) return;var hv = data.getAttribute('data-hv');var hvs = hv.split(',');
    hvs.forEach(function(item,row){var keyValue = item.split(':'); //vNode对象上一定要有model,这是方便vNode相应时候的找vModel        vNodes.push({
            directive: directives[keyValue[0]],
            modelKey: keyValue[1],
            model: vModel,
            elm: data
        });
    });
});
Nach dem Login kopieren

Hier reden wir Informationen zum Parsen Für vNode ist es sehr weit hergeholt, da es nur die von data-hv auf dem Dom angegebenen Anweisungen sammelt und die entsprechenden Anweisungen, Elemente, vModel usw. in einem Objekt in vNodes für die get-Methode jedes Attributs speichert von vModel zum Sammeln von Abhängigkeiten.

  1. 5. Erste Initialisierung

Anweisungen:
//调用所有的get一次Watch.isInit = true;var _keys = Object.getOwnPropertyNames(vModel);
_keys.map(function(key,data){var data = vModel[key];
    Watch.run(data); 
});
Watch.isInit = false;
Nach dem Login kopieren

Der Wert wird initialisiert von vModel wird an den Dom gerendert. Hier wird jeder Get aktiv ausgeführt und dann die watch.run-Methode ausgeführt.

  1. Ich habe das Gefühl, dass das Design und die Implementierung hier nicht mit den Vorstellungen von vue übereinstimmen. Wenn jemand dies sieht, geben Sie mir bitte einige Ratschläge und Anleitungen.

  2. 6. Geparster Dom

Das obige ist der detaillierte Inhalt vonLernen und verstehen Sie gemeinsam den Vue-Quellcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die Anwendungspraxis von Python beim Schutz von Software-Quellcode Die Anwendungspraxis von Python beim Schutz von Software-Quellcode Jun 29, 2023 am 11:20 AM

Als Programmiersprache auf hohem Niveau ist Python leicht zu erlernen, leicht zu lesen und zu schreiben und wird häufig in der Softwareentwicklung eingesetzt. Aufgrund des Open-Source-Charakters von Python ist der Quellcode jedoch für andere leicht zugänglich, was einige Herausforderungen für den Schutz des Software-Quellcodes mit sich bringt. Daher müssen wir in praktischen Anwendungen häufig einige Methoden anwenden, um den Python-Quellcode zu schützen und seine Sicherheit zu gewährleisten. Beim Schutz des Software-Quellcodes stehen für Python verschiedene Anwendungspraktiken zur Auswahl. Nachfolgend sind einige häufige aufgeführt

Wie kann der Quellcode von PHP-Code im Browser angezeigt werden, ohne dass er interpretiert und ausgeführt wird? Wie kann der Quellcode von PHP-Code im Browser angezeigt werden, ohne dass er interpretiert und ausgeführt wird? Mar 11, 2024 am 10:54 AM

Wie kann der Quellcode von PHP-Code im Browser angezeigt werden, ohne dass er interpretiert und ausgeführt wird? PHP ist eine serverseitige Skriptsprache, die häufig zur Entwicklung dynamischer Webseiten verwendet wird. Wenn eine PHP-Datei auf dem Server angefordert wird, interpretiert und führt der Server den darin enthaltenen PHP-Code aus und sendet den endgültigen HTML-Inhalt zur Anzeige an den Browser. Manchmal möchten wir jedoch den Quellcode der PHP-Datei direkt im Browser anzeigen, anstatt ihn auszuführen. In diesem Artikel wird erläutert, wie der Quellcode von PHP-Code im Browser angezeigt wird, ohne dass er interpretiert und ausgeführt wird. In PHP können Sie verwenden

Website zum Online-Ansehen des Quellcodes Website zum Online-Ansehen des Quellcodes Jan 10, 2024 pm 03:31 PM

Sie können die Entwicklertools des Browsers verwenden, um den Quellcode der Website anzuzeigen. Im Google Chrome-Browser: 1. Öffnen Sie den Chrome-Browser und besuchen Sie die Website, auf der Sie den Quellcode anzeigen möchten Seite und wählen Sie „Inspizieren“ oder drücken Sie die Tastenkombination Strg + Umschalt + I, um die Entwicklertools zu öffnen. 3. Wählen Sie in der oberen Menüleiste der Entwicklertools die Registerkarte „Elemente“ aus. 4. Sehen Sie sich einfach den HTML- und CSS-Code an der Website.

Eine umfassende Anleitung zum Erlernen und Anwenden des Golang-Framework-Quellcodes Eine umfassende Anleitung zum Erlernen und Anwenden des Golang-Framework-Quellcodes Jun 01, 2024 pm 10:31 PM

Durch das Verständnis des Quellcodes des Golang-Frameworks können Entwickler die Essenz der Sprache beherrschen und die Funktionen des Frameworks erweitern. Besorgen Sie sich zunächst den Quellcode und machen Sie sich mit seiner Verzeichnisstruktur vertraut. Zweitens lesen Sie den Code, verfolgen Sie den Ausführungsfluss und verstehen Sie die Abhängigkeiten. Praxisbeispiele zeigen, wie Sie dieses Wissen anwenden: Erstellen Sie benutzerdefinierte Middleware und erweitern Sie das Routing-System. Zu den Best Practices gehören das schrittweise Lernen, das Vermeiden von sinnlosem Kopieren und Einfügen, die Verwendung von Tools und der Verweis auf Online-Ressourcen.

Kann Vue Quellcode anzeigen? Kann Vue Quellcode anzeigen? Jan 05, 2023 pm 03:17 PM

Vue kann den Quellcode in Vue anzeigen: 1. Holen Sie sich Vue über „git clone https://github.com/vuejs/vue.git“ 2. Installieren Sie Abhängigkeiten über „npm i“; 3. Über „npm i -g rollup“ 4. Ändern Sie das Entwicklungsskript. 5. Debuggen Sie den Quellcode.

So zeigen Sie den Quellcode von Tomcat in der Idee an So zeigen Sie den Quellcode von Tomcat in der Idee an Jan 25, 2024 pm 02:01 PM

Schritte zum Anzeigen des Tomcat-Quellcodes in IDEA: 2. Tomcat-Quellcode in IDEA importieren; 4. Das Funktionsprinzip von Tomcat verstehen; Aktualisieren 7. Verwenden Sie Tools und Plug-Ins. 8. Nehmen Sie an der Community teil und leisten Sie einen Beitrag. Detaillierte Einführung: 1. Laden Sie den Tomcat-Quellcode herunter. Sie können das Quellcodepaket von der offiziellen Website von Apache Tomcat herunterladen. Normalerweise liegen diese Quellcodepakete im ZIP- oder TAR-Format vor.

Analyse und Optimierung des Quellcodes des Golang-Frameworks Analyse und Optimierung des Quellcodes des Golang-Frameworks Jun 02, 2024 pm 04:54 PM

In diesem Artikel wird die Quellcode-Analyse und -Optimierung des Go-Frameworks untersucht. Die Quellcodestruktur umfasst vier Hauptpakete, die die Kern-Framework-Logik, den Anforderungskontext, die Datenbindung und das Antwort-Rendering umfassen. Zu den Optimierungstechniken gehören: 1. Verwenden Sie Routing-Bäume, um die Routenverarbeitung zu optimieren und die Geschwindigkeit der Routensuche deutlich zu erhöhen. 2. Verwenden Sie Middleware für Caching und Komprimierung, um die Serverlast und Antwortzeit zu reduzieren. 3. Vermeiden Sie zeitaufwändige Vorgänge bei Rückrufen, um eine hohe Reaktionsfähigkeit aufrechtzuerhalten. 4. Aktivieren Sie die Protokollierung und analysieren Sie langsame Anfragen, um Leistungsengpässe zu identifizieren. 5. Aktualisieren Sie die Framework-Versionen regelmäßig, um von den neuesten Leistungsverbesserungen zu profitieren.

PHP-Quellcode-Fehler: Lösung des Indexfehlerproblems PHP-Quellcode-Fehler: Lösung des Indexfehlerproblems Mar 10, 2024 am 11:12 AM

PHP-Quellcodefehler: Um das Indexfehlerproblem zu lösen, sind spezifische Codebeispiele erforderlich. Aufgrund der rasanten Entwicklung des Internets stoßen Entwickler beim Schreiben von Websites und Anwendungen häufig auf verschiedene Probleme. Unter diesen ist PHP eine beliebte serverseitige Skriptsprache, und ihre Quellcodefehler sind eines der Probleme, auf die Entwickler häufig stoßen. Wenn wir versuchen, die Indexseite einer Website zu öffnen, werden manchmal verschiedene Fehlermeldungen angezeigt, z. B. „InternalServerError“, „Unde

See all articles