MVVM,请指教

178 阅读2分钟

MVVM模式

MVVM大家都很熟悉,三层结构,Model-View-ViewModel。View视图层即我们所看见的页面效果,由ViewModel负责进行转化,依附原则是Model模型层。也就是,由Model模型层通过ViewModel映射出View视图,只需要操作Model模型就能得到View视图,这就是MVVM。

MVVM是设计模式中的一种,那设计模式是什么?我认为是解决一类问题的方案。它解决了什么?他提供了便利,因为我们只需要去关注Model就行了,将前端推向了工程化的JIO步。 (个人觉得设计模式和算法是一样的,都是为了解决一类问题,只是算法注重数据的行为方式,设计模式注重代码结构)

双向绑定

Vue的双向绑定,至少官方说是叫V-model这个东西,V-model的实质:绑定了value和其对应的input方法。

它实际上做了什么事?用户触发相应的事件,修改了Model层的data数据,然后触发了VM层,刷新了View视图。是修改了Model层的data数据,并不是修改了View层

我不认同MVVM=双向绑定

或许有的童鞋认为MVVM表现上就是双向绑定这样,通过视图改了数据模型,又能通过数据模型修改了视图,再说了VM层是通过数据劫持监听getter和setter(我愿意叫它数据绑定)。

单纯用Vue做了一个页面动画展示的效果,没有给用户提供任何V-model的入口,那这个Vue算遵循MVVM模式么?算,这怎么不算呢?但它确实没有双向数据绑定。

再来扣题,MVVM是将Model映射成View视图,只是为了减少你的工程量,不必关心过多的什么什么,只需要写好你的Model层就好了。

轻喷!!!

或许我有不对的地方,请各位大佬指出,我虚心请教,但至少我目前是这么个理解

额外补充MVC和MVVM

有人问我MVC和MVVM的区别,我对MVC了解不多,当初学习SpringMvc的时候,只是觉得MVC三层结构只是为了分离代码,你要自己分层,方便管理和排查这样的。MVVM压根就不需要你操心VM层。不过Vue项目也是一样讲究代码层次,这算不算另类的MVC?