Strict MVVM requires that View cannot communicate directly with Model, but Vue provides the $refs attribute in the component so that Model can directly operate View, which violates this rule, so Vue does not fully follow MVVM.
MVVM is the abbreviation of Model-View-ViewModel. It is essentially an improved version of MVC. MVVM abstracts the state and behavior of the View, allowing us to separate the view UI and business logic.
Of course, ViewModel has already done these things for us. It can take out the Model's data and help handle the business logic involved in the View that needs to display content. Microsoft's WPF brings new technical experiences, such as Silverlight, audio, video, 3D, animation..., which results in the software UI layer being more detailed and customizable.
At the same time, at the technical level, WPF also brings new features such as Binding, Dependency Property, Routed Events, Command, DataTemplate, ControlTemplate and so on.
The origin of the MVVM (Model-View-ViewModel) framework is a new architectural framework that evolved from the application method of combining the MVP (Model-View-Presenter) mode with WPF. It is based on the original MVP framework and incorporates the new features of WPF to cope with increasingly complex changes in customer needs.
Because of the emergence of WPF technology, the MVC architecture model has been improved. The MVVM model uses data binding infrastructure. They make it easy to build the necessary elements of your UI.
You can refer to The Composite Application Guidance for WPF (prism)
View is bound to ViewModel, and then executes some commands to request an action from it. In turn, ViewModel communicates with Model and tells it to update in response to the UI. This makes building the UI for the application very easy.
The easier it is to paste an interface onto an application, the easier it will be for appearance designers to use Blend to create a beautiful interface. At the same time, when the UI and functions become more and more loosely coupled, the testability of the functions becomes stronger and stronger.
In the MVP model, in order to separate the UI layer from the logical layer, designers add an interface between the UI layer and the logical layer. Whether they are UI developers or data developers, they must respect this contract and design and develop according to it. In this way, ideally both Web UI and Window UI can use the same set of data logic.
Learn from MVP’s IView layer and develop a habit. View Model sounds much more appropriate than Presenter; some things related to events and commands will be placed in MVC's 'C', or MVVM's 'Vm'.