论MVC和MVVM,来个简单点理解

7年老coder,从美工做到前端开发,现在需要跳槽,看了下招聘信息提到需要对mvc和mvvm理解,干了这么多年实在惭愧,完全没时间去理解解释各种框架什么mvc  mvp mvvm,这个时候只能百度了,看了下那些绕口的解释,我想如果是个初学前端的肯定没法理解吸收,现在我就来说下我自己的体会。

1,开始我需要做一个企业门户,这个页面就是展示信息使用,可能涉及到一些动画效果,那么开发web前端的时候可能就只需要用到struts标签和一些简单的js效果库。则再前端只需要V和C既能完成;

2,开发一个web应用系统,现在有一个需求:有一个人员选择的input控件,需要弹出人员列表并选择人员,选择后input框中显示已选择人员的姓名;但是有个要求需要再提交给后台的数据里提交此人员的id信息,或者是电话号码信息,而非人员的姓名信息;并且每次做修改的时候后台交给前端的数据依然是id信息,需要将input框中的显示信息对应到姓名。

这种情况下MVC就能很好的解决这些需求,M存储实际的对应实际数据,V只做显示工作,C负责控制M和V的显示同步,每次与后台交互的时候都传递M中的实际数据,问题解决;

3,现在来了一个更为复杂的需求,界面上有2个或者N++个input输入框,改变input1的数值,input2的数据需要更新+1,input3的数据需要更新+2 .......,依次类推,如果按照mvc的我们需要做的事当input1的数据change的时候,C负责控制M的变化,并且开始控制input2的显示数据+1,input3的显示数据+2;如果要将所有input绑定在一起,既操作input2时input1和input3同样要发生变化,当然也可以简化一下把所有的change事件都绑定给同一个方法,但依然复杂,有时会有更复杂的需求,比如input的数量不定或者某些input框是根据具体操作某单一input才会发生变化,想一想这种情况就能体会到代码的复杂;

岔开一个话题,之前了解了下量子纠缠,量子与量子之间通过虫洞产生了纠缠,可能他们隔着几亿光年的距离,但是只需要观察其中一个量子的变化既能确定另外一个量子的状态;同理能不能构建一个V与V之间的虫洞——

MVVM,应该这么读:M,V,VM

VM既viewmodel,让V与M之间产生联系,称之为双向绑定,既V变化M对应变化,M变化同时也造成V变化;

示例3中存在的问题能得到很好的解决,既Input1,2,3.....我们都绑定同一个model数据,并且写好V的显示规则如 m+1,m+2;这样当任意input发送操作变化时,都去改变M的数据,这个时候VM负责将M产生的变化对应给其他input(既V),这样子所有的V都被纠缠在了一起;

以上则是我对MVC和MVVM的理解,也需更多的思考应该都在实际开发中遇到的问题来讨论和解决的,不知道这些理解能否给大家带来帮助

viewmodel

你可能感兴趣的:(论MVC和MVVM,来个简单点理解)