笔记1-谈谈对MVVM的理解。
谈MVVM首先就想起众所周知的MVC。
举例说什么是MVC,model,view,controller,从数据库中查询出来的数据层就是model层,通过controller层将数据进行增减整合,传给view层进行显示。前端的Mvc就是再进一步细化了Java中的view层。将后台返回的数据作为model层,将数据进行解析拼接等作为controller层,最后渲染到view层。随着前端对于逻辑控制的越来越轻量,MVVM作为MVC的一种补充,出现了。
在MVVM中,controller控制逻辑并不是直接没有了。而是将操作Dom的响应逻辑被SDK(vue内部封装实现)统一实现了。
以vue举例说明MVVM如何实现的双向绑定,在vue2.0利用ES5的object.defineProperty中的setter和getter方法绑定,backbone的发布订阅模式,从主动和被动的方式实现了view-model的双向绑定。在vue3.0中利用ES6的proxy和reflect来代替object.defineProperty的方式。大致原因defineProperty 只能对属性进行劫持,所以出现了需要递归遍历,新增属性需要手动 Observe 的问题。