这个问题我一直都觉得是,但是今天看文档发现说:虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。在网上也搜出很多人不认为vue是或者完全是mvvm框架,想要一个确定的答案!
vue是的,Vue的数据驱动是通过MVVM( Model-View-ViewModel )模式来实现的,视图模型(ViewModel)就相当于一个观察者监控着view,model的动作,并及时通知进行相应变化。当Model 发生变化的时候,ViewModel能够监听到这种变化,并及时通知View做出相应的修改。当View发生变化时,ViewModel监听到变化后,通知Model进行修改,实现了视图与模型的互相解耦。
是的
Module:vue的功能模块
Vue:展示给用户看的视图
Vue Module:解析module并传输至vue的解析模块
Vue页面产生的指令和事件是由Vue Module进行解析的,解析后确认到有这个事件,然后就会回调到module里,进行不同的回调,这个就是vue的MVVM框架
其实结合MVVM的概念很容易就能判断Vue.js属于MVVM。
Vue 数据双向绑定(响应式原理)主要是指:数据变化更新视图,视图变化更新数据。
我们实际开发中操作的是数据(Model),Vue.js自动更新到视图(View),页面中操作视图(View),Vue.js自动更新数据(Model)
MVVM,是Model-View-ViewModel的简写,是M-V-VM三部分组成。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,其中ViewModel将视图 UI 和业务逻辑分开,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。
MVVM采用双向数据绑定,view中数据变化将自动反映到viewmodel上,反之,model中数据变化也将会自动展示在页面上。把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的修改同步回Model。
MVVM核心思想,是关注model的变化,让MVVM框架利用自己的机制自动更新DOM,也就是所谓的数据-视图分离,数据不会影响视图。
vue是mvvm---MVVM 也被称为 model-view-binder。MVVM 中,VM 是 ViewModel。View 与 ViewModel 之间采用数据绑定,绑定是双向的,避免了开发人员写一些同步 ViewModel 和 View 的重复逻辑。通过数据绑定,View 发生变化会自动反映到 ViewModel,ViewModel 产生的变化也会自动更新 View。
是的
Model: 就是系统中的对象,可包含属性和行为(就是一个class,是对现实中事物的抽象,开发过程中涉及到的事物都可以抽象为Model,例如客户,客户的姓名、编号、电话、住址等);
View: 就是用xaml实现的界面,负责与用户交互,接收用户输入,把数据展现给用户;
ViewModel: 是一个C#类,负责收集需要绑定的数据和命令,聚合Model对象,通过View类的DataContext属性绑定到View,同时也可以处理一些UI逻辑。显示的数据对应着ViewMode中的Property,执行的命令对应着ViewModel中的Command。
三者之间的关系: View对应一个ViewModel,ViewModel可以聚合N个Model,ViewModel可以对应多个View
MVVM的优势
MVVM的根本思想就是界面和业务功能进行分离,View的职责就是负责如何显示数据及发送命令,ViewModel的功能就是如何提供数据和执行命令。各司其职,互不影响。