近日参与到公司架构的重搭建,真是意识到了一个项目的架构是多么的重要。一个项目越做越复杂只能说明架构师无能。
我是查看的 阮一峰老师的网站和掘金作者悟空的一篇文章。豁然开朗。写一下自己的理解,勉勉强强算是一篇原创文章吧。贴图全部来自上述两者文章内。
1,MVC,MVP,MVVM的名词解释。
M,model(模型),数据保存。
V,view(视图),用户界面。
C,control(控制器),业务逻辑。
P,presenter,我也不知道该翻译成什么,就音译成主持吧,它是一个联系业务和逻辑的层。在mvp模式里面占据最重要的地位。
VM,viewModel,其实效果和control还有presenter一样。
2,详细解释。
(1)MVC。
三个模块的通信方式是单向的,view层发送指令给control,control通过逻辑代码控制model层改变状态。model状态改变后将数据返回个view层。
但是在实际的应用中。往往是更加灵活的。view层可接受用户指令,control也可以接受用户指令作为一个事件的开始。
还有一个用法我不是很理解,例如backbone.js。他也是MVC的模式,但是用户可以通过view发送指令后直接改变model状态。用户也能直接从control发送指令,再由control发送个view。
(2)MVP。
MVP模式相对于MVC,改变了通信方向。各个部分的通信都是双向的,但是model和view层并没有通道,全部都是通过presenter来完成的。view模块不部署任何逻辑,没有主动性,被称为被动视图。
(3)MVVM
MVVM的三个模块的通信方式与MVP相似。唯一的区别是它的VM和View模块是双向绑定。view的变动是实时的映射在vm模块上。Angular和Ember都是这种模式。
后续还会继续更细。