【前端学习笔记】MVC,MVP,MVVM的区别和各自原理

版权声明:商业转载需要经过本人同意,敬上! https://blog.csdn.net/weixin_41835977/article/details/89343633

http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
学习自阮一峰的博客。

1,MVC=Model-View-Controller

视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存
单向通信。
1,View 传送指令到 Controller;
2,Controller 完成业务逻辑后,要求 Model 改变状态;
3,Model 将新的数据发送到 View,用户得到反馈;
MVC
互动模式

2,MVP=Model-View-Presenter

通信方式改变,各部分通信双向,但View-Model不再发生联系,全部由Presenter传递。
在这里插入图片描述

3,MVVM=Model View ViewModel

MVVM
MVVM是Model-View-ViewModel的简写。它模式是MVC—>MVP—>MVVM的进化版。
唯一区别是:采用双向绑定,View的变动,自动反应到ViewModel,反之亦然。
参考自:
https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014757105098309140e608db714251bf071db711a9d183000
数据保存-Model用JavaScript对象表示,而View负责UI界面显示,两者做到了最大限度的分离。
而把Model和View关联起来的就是ViewModel。ViewModel负责把Model的数据同步到View显示出来,还负责把View的界面修改同步回Model更新数据。

MVVM最大的优势是编写前端逻辑非常复杂的页面,尤其是需要大量DOM操作的逻辑,利用MVVM可以极大地简化前端页面的逻辑。
但是MVVM不是万能的,它的目的是为了解决复杂的前端逻辑。对于以展示逻辑为主的页面,例如,新闻,博客、文档等,不能使用MVVM展示数据,因为这些页面需要被搜索引擎索引,而搜索引擎无法获取使用MVVM并通过API加载的数据。
所以,需要SEO(Search Engine Optimization)的页面,不能使用MVVM展示数据。不需要SEO的页面,如果前端逻辑复杂,就适合使用MVVM展示数据,例如,工具类页面,复杂的表单页面,用户登录后才能操作的页面等等。

猜你喜欢

转载自blog.csdn.net/weixin_41835977/article/details/89343633