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

So beschränken Sie das Eingabefeld in HTML auf die Eingabe reiner Zahlen

Beschränken Sie input Eingabefeld auf reine Zahle...

MYSQL METADATA LOCK (MDL LOCK) Theorie und Sperrtyptest

Inhaltsverzeichnis MYSQL METADATA LOCK (MDL LOCK)...

4 Möglichkeiten zur Optimierung von MySQL-Abfragen für Millionen von Daten

Inhaltsverzeichnis 1. Der Grund, warum das Limit ...

So stellen Sie mit Docker schnell einen Elasticsearch-Cluster bereit

In diesem Artikel werden Docker Container (orches...

Detaillierte Erläuterung der MySQL-Transaktionsverarbeitung

1. MySQL-Transaktionskonzept MySQL-Transaktionen ...

Detaillierte Erklärung zu React Hooks

Inhaltsverzeichnis Was sind Hooks? Klassenkompone...

JavaScript-Grundlagenobjekte

Inhaltsverzeichnis 1. Gegenstand 1.1 Was ist ein ...

Verwendung des MySQL Query Rewrite-Plugins

Plugin zum Umschreiben von Abfragen Ab MySQL 5.7....

Reines CSS-Dropdown-Menü

Ergebnisse erzielen Implementierungscode html <...