Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

156.[vue]谈谈你对MVC、MVP和MVVM的理解? #156

Open
webVueBlog opened this issue Apr 2, 2020 · 2 comments
Open

156.[vue]谈谈你对MVC、MVP和MVVM的理解? #156

webVueBlog opened this issue Apr 2, 2020 · 2 comments
Labels
vue vue

Comments

@webVueBlog
Copy link
Member

[vue]

@webVueBlog webVueBlog added the vue vue label Apr 2, 2020
@webVueBlog
Copy link
Member Author

MVC: Model-View-Controller

MVP: Model-View-Presenter

MVVM: Model-View-ViewModel

@webVueBlog
Copy link
Member Author

MVC把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)

模型(Model):数据库相关的操作、文件的访问和数据结构等。

视图(View):专注于显示,如Web前端(HTML/CSS/Java Script)

控制器(Controller):连接模型和视图,如把视图的请求发送给模型或把数据返回给视图等

MVC只是一种框架模式,针对不同的平台环境的实现方式会有些区别

MVC的实现了视图和模型的分离,避免了视图和模型糅合在一起,当视图改变的时候只要业务逻辑没变不需要改变模型;但是它有一个缺点缺点是因为MVC中的控制器并不能直接更新视图,所以MVC并不能实现视图和模型的完全分离,视图依然依赖模型的数据(数据结构)来显示,也就是说视图依赖模型。

MVP是针对MVC的缺点而进行了改进,它把软件系统分为三个基本部分:模型(Model)、视图(View)和展示器(Presenter)

模型(Model):数据库相关的操作、文件的访问和数据结构等。

视图(View):专注于显示,如Web前端(HTML/CSS/Java Script)

展示器(Presenter):连接模型和视图,处理视图的请求并根据模型更新视图。

MVP用展示器代替了控制器,而展示器是可以直接更新视图,所以MVP中展示器可以处理视图的请求并递送到模型又可以根据模型的变化更新视图,实现了视图和模型的完全分离。

MVVM是MVP更进一步的发展,把软件系统分为三个基本部分:模型(Model)、视图(View)和视图模型(ViewModel)

模型(Model):数据库相关的操作、文件的访问和数据结构等。

视图(View):专注于显示,如Web前端(HTML/CSS/Java Script)

视图模型(ViewModel):连接模型和视图,视图模型和视图是双向绑定的。

MVVM用视图模型代替了MVP中的展示器,视图模型和视图实现了双向绑定,当视图发生变化的时候视图模型也会发生改变,当视图模型变化的时候视图也随之变化。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
vue vue
Projects
None yet
Development

No branches or pull requests

1 participant