Webinterview: Der Unterschied zwischen MVC und MVVM und warum Vue nicht vollständig mit MVVM kompatibel ist

Webinterview: Der Unterschied zwischen MVC und MVVM und warum Vue nicht vollständig mit MVVM kompatibel ist

Unterschied zwischen MVC und MVVM

vorgenannt

Zunächst einmal sind diese beiden nur ein Gedanke, ein Designmuster

Viele Programmiersprachen haben viele Frameworks basierend auf dieser Idee entwickelt, beispielsweise SpringMVC in Java, ThinkPHP in PHP, Vue, React, Angular in JavaScript usw.

MVC

Überblick

1. Daten sollten in der Ansicht gerendert werden
Definieren einer Template-Engine
Abrufen der Daten
Anschließend rendern Sie die Daten in die Template-Engine

2. Aktionscontroller anzeigen
Fügen Sie der Schaltfläche auf der Seite ein Klickereignis hinzu
Aufrufen von Methoden in Ereignissen
Der Controller sendet dann eine Anfrage zur Änderung der Daten

3. Senden Sie Netzwerkanforderungen, um Daten über Methoden zu ändern
Senden Sie dann eine Netzwerkanforderung, um die geänderten Daten abzurufen
Rendern Sie dann die Daten in der Ansicht

Für und Wider

Vorteil:

Reduzieren Sie die Kopplung und erleichtern Sie die Codewartung und -erweiterung

Mangel:

Nach jeder Datenaktualisierung muss DOM bedient werden, was die Entwicklungseffizienz beeinträchtigt.

MVVM

Überblick

Vorwort

Um die Entwicklungseffizienz zu verbessern, entstand eine neue Idee: MVVM. Sein größtes Merkmal: bidirektionale Datenbindung;

Wenn sich die Daten in M ​​ändern, ändern sich die Daten in V automatisch. Wenn sich die Daten in V ändern, ändern sich die Daten in M ​​automatisch.

MVVM ist eine Weiterentwicklung von MVC und ein Ersatz für MVC.

Merkmale:

Wenn sich M ändert, ändert sich V automatisch. Wenn sich V ändert, ändert sich M automatisch.

Beziehung:

Sobald sich M ändert, erkennt VM die Änderung von M und ändert V automatisch

Sobald sich V ändert, erkennt VM die Änderung in V und ändert automatisch M

Mit MVVH werden alle DOM-Operationen von der VM ausgeführt, was die Arbeitsbelastung der Programmierer reduziert. Programmierer können viel Zeit auf die Geschäftslogik statt auf DOM-Operationen verwenden.

MVVM-Implementierer – Vue

Bildbeschreibung hier einfügen

Warum ist Vue nicht vollständig mit MVVM kompatibel?

Bildbeschreibung hier einfügen

Die ursprünglichen Worte stammen aus der Erklärung des Autors auf der offiziellen Vue-Website, aber der Autor hat keinen Grund angegeben. Nach meiner eigenen Recherche und Sortierung denke ich, dass es zwei Gründe gibt

Grund 1: MVVM bezieht sich auf „Model-View-ViewModel“, was „Modell“ und „Ansicht“ vollständig entkoppeln sollte, aber Vue bietet eine Eigenschaft: ref, über die Sie das DOM-Objekt abrufen und die Ansicht direkt bedienen können. Dies verstößt gegen MVVM;

Grund 2: Wie in der folgenden Abbildung gezeigt, ist die „Datenschicht“ strukturell in der „Datenmodellschicht“ enthalten und die beiden Teile sind nicht vollständig unabhängig.

Bildbeschreibung hier einfügen

Oben finden Sie ausführliche Informationen zum Unterschied zwischen MVC und MVVM in Webinterviews und die Antwort darauf, warum Vue nicht vollständig mit MVVM kompatibel ist. Weitere Informationen zu MVC und MVVM finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Hinweise zu Vue.js und MVVM
  • Eine kurze Analyse des MVVM-Implementierungsprinzips in Vue
  • Eine kurze Diskussion über die MVC- und MVVM-Strukturen der JavaScript-Frontend-Entwicklung
  • Erklärung des MVVM-Modus in Vue
  • Detaillierte Erläuterung des MVVM-Prinzips und der Implementierungsmethode in Vue

<<:  So lösen Sie das Problem der langsamen Geschwindigkeit von MySQL wie bei Fuzzy-Abfragen

>>:  Nginx-Anti-Crawler-Strategie, um UA am Crawlen von Websites zu hindern

Artikel empfehlen

Detaillierte Erklärung zum Ein- und Aussteigen aus dem Docker-Container

1 Starten Sie den Docker-Dienst Zuerst müssen Sie...

Beispiele für die Interaktion zwischen MySQL und Python

Inhaltsverzeichnis 1. Daten vorbereiten Erstellen...

Docker legt Port 2375 frei, was zu Serverangriffen und -lösungen führt

Ich glaube, dass Studenten, die etwas über die Do...

Erkunden Sie die gängigen VMware ESXI CLI-Befehle

Inhaltsverzeichnis 【Allgemeine Befehle】 [Zusammen...

Navicat kann keine Funktionslösungsfreigabe erstellen

Als ich zum ersten Mal eine MySQL-FUNKTION schrie...

Detaillierte Erklärung der regulären Ausdrücke von Nginx

Nginx (Engine x) ist ein leistungsstarker HTTP- u...

Eine kurze Diskussion über 12 klassische Probleme in Angular

Inhaltsverzeichnis 1. Erklären Sie bitte, was die...

So deinstallieren Sie MySQL sauber (getestet und effektiv)

Wie deinstalliere ich Mysql vollständig? Befolgen...