MVC,MVP 和 MVVM的区别

个人对于mvc,mvp与mvvm的理解

mvc:缺点是v跟c耦合高,v的代码多,v跟m又是能够通讯的。
mvp:改成v跟m不能通讯。
mvvm:则是将v跟c解耦,c改为vm,vm跟v是双向绑定(其中一个改变,另一个会自动跟着改,不需要像mvc一样c写代码来改变v)

mvvm相比mvc最大的好处是v跟c解耦了,c原本很多时候需要写一些代码对v进行操作(比如checkBox.setCheck(true)这样的代码),而mvvm里vm改变了某些值,v的界面会自动变化,不需要vm写代码去手动改变。

mvvm的运行图例

MVC,MVP 和 MVVM的区别_第1张图片

mvvm的缺点

  1. 数据绑定使得 Bug 很难被调试。你看到界面异常了,有可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题。数据绑定使得一个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。
  2. 对于过大的项目,数据绑定需要花费更多的内存。

有关vue的mvvm结构

vue并没有完全遵循mvvm,但是 Vue 的设计也受到了它的启发。

view层是template部份。
model层是data、prop、computed等。
而viewModel则是将view跟model连接在了一起,也就是let vm = new Vue()
view的改变会立即改变model,相反也是。这个双向绑定就是vm的作用。

分享一篇讲的不错的文章

https://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExNg==&mid=2665514440&idx=1&sn=f24bb68037dce238b47288362e0964e2&chksm=80d67d8bb7a1f49d36c941cee72a10e37f2eb59b95430694e14b5ff0f104b1ac6466e14af63f&mpshare=1&scene=23&srcid=04100WEgWKTLJaYrmlMKtjl9#rd

你可能感兴趣的:(开发通用)