MVVM在概念上是真正将页面与数据逻辑分离的模式,在开发方式上,它是真正将前台代码开发者(JS+HTML)与后台代码开发者分离的模式(asp,asp.net,php,jsp)。在介绍它之前我们先来看一下MVP和MVC的定义:
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。
MVC里,View是可以直接访问Model的!从而,View里会包含 Model信息,不可避免的还要包括 一些 业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。
对于MVVM,我认为它是在Presentation上进行设计的,它前数据绑定工作放到一个JS里去实现,JS由前端开发人员去控制,而这个JS文件的主要功能是完成数据的绑定,即把model绑定到UI的元素上。
MVVM架构~目录
MVVM架构~Knockoutjs系列之text,value,attr,visible,with的数据绑定
MVVM架构~Knockoutjs系列之js接收C#数据集合的方式
MVVM架构~knockoutjs与MVC配合,实现列表的增删改功能
MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法
MVVM架构~knockoutjs系列之正则表达式使规则更灵活
MVVM架构~knockoutjs系列之包括区域级联列表的增删改
MVVM架构~knockoutjs系列之验证信息自定义输出~续
MVVM架构~knockoutjs系列之验证信息自定义输出~再续
MVVM架构~使用boxy和knockoutjs实现编辑功能
MVVM架构~knockoutjs系列之文本框数符长度动态统计功能
MVVM架构~knockoutjs系列之Mapping插件为对象添加ko属性
MVVM架构~knockoutjs系列之为validation.js扩展minLength和maxLength
MVVM架构~knockoutjs系列之扩展ajax验证~验证数据是否存在
MVVM架构~knockoutjs系列之扩展ajax验证~验证输入数据是否与后台数据相等
MVVM架构~knockoutjs系列之一些异常的总结(永久更新)
MVVM架构~knockoutjs系列之为Ajax传递Ko数组对象
MVVM架构~knockoutjs系列之数组的$index和$data
感谢您的阅读!