Model:根据APP文档,model包括数据和操作数据的业务逻辑。
View:view通常是UIKit控件的集合,不能直接引用model,并且视图本身没有任何业务逻辑。
Controller:controller协调model和view之间的所有交互。
在MVC下,所有对象被归类为一个model,一个view,一个controller。
工作流程:首先将用户交互通知给controller,然后controller通过更新model来反应状态的改变,model成功持有数据后通知controller来更新他们负责的view。
优点:
1 各司其职,互不干涉:三个层各司其职其中一层的改变队其他层的影响比较小。
2 有利于组件的重用:多个视图对应一个模型的能力
缺点:
1 增加了系统结构额实现的复杂性:模型、视图以及控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率
2 与控制器间的连接过于紧密
3 较差的可测试性:MVC并不鼓励测试人员编写单元测试。因为view controller混合了视图处理逻辑和业务逻辑,分离这些成分的单元测试成了一个艰巨的任务
4 厚重的ViewController:由于各种原因使ViewController过于臃肿庞大。
衍生于MVC,它正式规范了视图和控制器紧耦合的性质,把view和viewController正式联系在一起。我们将它视为一个新的组件,并将controller中的业务处理逻辑,视图显示逻辑,网络逻辑,数据缓存逻辑等抽取出来,放入视图模型ViewModel中。
Model:数据模型。ViewModel可以引用Model,反过来不行
View | view controller:不能直接引用model,引用ViewModel
viewModel:放置一些业务处理逻辑,视图显示逻辑,网络逻辑,数据缓存逻辑等
工作流程:首先View|View Controller将用户交互通知给ViewModel,然后通过更新model来反应状态的改变,model成功持有数据后通知ViewModel来更新他们负责的view
优点:
1 低耦合性:view可以独立于model进行变化和修改,一个viewModel可以绑定到不同的view上。
2 可重用性:可以把一些视图逻辑放入viewModel中,让很多view重用这单视图逻辑。
3 独立开发:开发人员可以专注于业务逻辑和数据的开发viewModel,设计人员可以专注于页面设计。
4 可测试性:可以针对viewModel进行测试
缺点:
1 轻微的增加代码量,但总体上减少了代码的复杂度
2 数据绑定使得bug很难被调试
3 对于大的项目,数据绑定和数据转化需要花费更多的内存
三个非常重要的架构模式:MVC (Model(模型)-View(视图)-Controller(控制器)),MVP (Model(模型)-View(视图)-Presenter(中介者)),MVVM (Model(模型)-View(视图)-ViewModel(视图模型))
Vue 中通过每个节点的 nodeType 属性是1还是3判断是元素节点还是文本节点,针对不同类型节点做不同的处理。DocumentFragment是一个可以被 js 操作但不会直接出发渲染的文档对象,Vue 中编译模板时是现将所有节点存到 DocumentFragment 中
那时计算机世界天地混沌,浑然一体,然后出现了一个创世者,将现实世界抽象出模型形成model,将人机交互从应用逻辑中分离形成view,然后就有了空气、水、鸡啊、蛋什么的。
MVVM 双向数据绑定 在Angular1.x版本的时候通过的是 脏值检测 来处理;而现在无论是React还是Vue还是最新的Angular,其实实现方式都更相近了,那就是通过 数据劫持+发布订阅模式
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!