haizlin / fe-interview

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家),6000+道前端面试题全面覆盖,HTML/CSS/JavaScript/Vue/React/Nodejs/TypeScript/ECMAScritpt/Webpack/Jquery/小程序/软技能……
http://www.h-camel.com
MIT License
25.25k stars 3.25k forks source link

[vue] 说说你对MVC、MVP、MVVM模式的理解 #232

Open undefinedYu opened 5 years ago

undefinedYu commented 5 years ago

[vue] 说说你对MVC、MVP、MVVM模式的理解

LQY-3777 commented 4 years ago

ickt-5: https://www.cnblogs.com/keitsi/p/5764785.html

xanthuz commented 3 years ago

这篇文章整合了许多不同书和百科对 MVC, MVP, MVVM 的解释,并消除了歧义。 大家可以看看:浅谈 MVC、MVP 和 MVVM 架构模式

yxllovewq commented 2 years ago

MVC:数据模型M+视图V+控制器C,V->C->M->V,数据变化直接影响视图。 MVP:V->P->M, M->P->V,P相对于MVC中的C会显得更加臃肿。 MVVM:将MVP中的P里面的数据变更,更新DOM的代码通过数据和视图的绑定独立出来,将MVP里的P精简化、让开发者侧重于业务逻辑。VUE便是参考MVVM模式。

Cai-zhiji commented 1 year ago

MVC(Model-View-Controller)、MVP(Model-View-Presenter)和 MVVM(Model-View-ViewModel)是常见的软件架构模式,用于组织和管理应用程序的代码结构。它们都旨在将应用程序的不同部分分离,以实现松耦合、可维护和可扩展的代码结构。

MVC

Model(模型):负责处理数据和业务逻辑。 View(视图):负责展示数据给用户,并处理用户的输入。 Controller(控制器):负责接受用户的输入,处理请求,并更新模型和视图。 在 MVC 模式中,视图和模型之间通过控制器进行通信,控制器负责处理用户的输入、更新模型和决定如何更新视图。这种模式将应用程序的逻辑分离成三个不同的组件,以实现解耦和重用性。

MVP 模式:

Model(模型):负责处理数据和业务逻辑。 View(视图):负责展示数据给用户,并处理用户的输入。 Presenter(表示器):负责处理用户输入、更新模型和更新视图。

MVVM 模式:

Model(模型):负责处理数据和业务逻辑。 View(视图):负责展示数据给用户,并处理用户的输入。 ViewModel(视图模型):作为视图和模型之间的中间层,负责处理视图的显示逻辑和用户的输入,并将数据更新反映到模型。 在 MVVM 模式中,视图通过数据绑定将视图和视图模型进行绑定,当视图模型的数据发生变化时,视图会自动更新。视图模型通过暴露数据和命令来供视图绑定和交互。这种模式实现了视图和数据的解耦,提供了更简洁和可测试的代码结构。

总结

VC、MVP 和 MVVM 是用于组织应用程序代码的常见模式。它们的核心目标都是实现代码的解耦、可维护性和可测试性,但在具体的实现和应用上存在一些区别。选择适合的模式取决于项目需求和开发团队的偏好。