概括 Vue内部通过Object.dedineProperty方法属性拦截的方式,把data对象里面每个数据的读写转化成getter/setter当数据变化时通知视图更新。
一.什么是MVVM数据双向绑定,它跟MVC有什么区别?
最大的区别就是它实现了View和Model的自动同步
先简单介绍MVC的优点:
1.耦合性低(运用mvc的应用程序的三个部件是相互独立的,改变其中一个不会影响其他两个) 2.重用性高(多个视图可以使用同一个模型) 3.生命周期成本低 4.部署快,可维护性高
MVC的缺点:
1.不适合小项目开发 2.视图与控制器联系过于紧密,妨碍了他们独立重用
二.什么是MVVM视图模型双向绑定,谈谈你对MVVM的理解
MVVM由三部分构成分别是:
Model 代表数据模型,数据和业务逻辑都在Model层中定义
View 代表UI视图,负责数据的展示
ViewModel 是一个对象 负责监听Model中数据的改变并控制View视图更新
MVVM优点
1.低耦合 View变化Model可以不变 当Model变化View也可以不变
2.可重用性
3.独立开发 不需要一直操作dom
总结:就是数据变化->视图更新 视图变化-数据变更的双向绑定效果
可以去查一下下面三者是如何实现的:
Observer(数据的观察者) Compile(依赖管理) Watcher(订阅者)