码迷,mamicode.com
首页 > 其他好文 > 详细

前端MV*

时间:2016-10-23 15:06:52      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:nal   架构设计   ref   架构   control   cbe   nload   res   .com   

前端开发时,常接触到MVC,MVP和MVVM这些名词,它们都是软件架构设计的一种方式,最初都是为桌面应用软件的设计而实现的,后来有了应用在WEB上的变体,《到底什么是MVC?》这篇文章有详细的介绍。那他们在WEB前端如何应用呢?

MVC

先看下MVC(Model-View-Controller)的概念:

Model:定义数据模型,实现业务逻辑,当数据发生变化时,通过事件通知View来更新。
View:界面视图,能从Model获取数据。
Controller:响应用户的界面交互操,能调用Model执行业务逻辑。

技术分享

真正意义上的MVC,不适合在前端实现,因为用户通过浏览器来操作界面,都是先由View来响应。Backbone.js常被称为是前端的MVC框架,实际并不是,用户的与界面的交互还是先到View,它的Controller只是做为路由器。

MVP

再看下MVP(Model-View-Presenter)的概念,MVP可分为Supervising Controller和Passive View模式:

  • Supervising Controller模式

Model:定义数据模型,实现业务逻辑,数据发生变化时,通过事件通知View来更新视图。
View:界面视图,响应用户的界面交互操作请求,然后将请求转给Presenter执行,View还能直接从Model获取数据。
Presenter:接受View的请求,然后可以做一些简单的控制或数据验证等处理,响应给View,或者调用Model执行业务逻辑。

技术分享

  • Passive View模式

Model:定义数据模型,实现业务逻辑,数据发生变化时,通过事件通知Presenter,Presenter再来操作View,更新界面视图。
View:界面视图,响应用户的界面交互操作请求,然后将请求转给Presenter执行。
Presenter:接受View的请求,可以是做一些简单的控制或数据验证等处理或者是从Model获取数据,再响应给View,也可以是调用Model执行业务逻。

技术分享

这两种模式在WEB前端实现,就是把页面的DOM事件逻辑提取出来,放到Presenter里,同时Presenter还充当View和Model通信的中介,实际应用中,很少严格按MVP方式来设计。

MVVM

不管是MVC还是MVP,都只是一种设计上的思路,目标是实现界面视图和业务逻辑解耦分离,在WEB前端,很多框架是用的这种方式来实现的,MVVM(Model-View-ViewModel)的概念:

Model:定义数据模型,实现业务逻辑,当Model数据发生变化时,通过事件通知ViewModel数据更新。
View:界面视图,响应用户的界面交互操作请求,然后将请求转给ViewModel执行。
ViewModel:能接受View的请求,操作View以及调用Model执行业务逻辑,ViewModel的数据跟View关联,当ViewModel数据变化后,自动更新对应的View的界面视图。

技术分享

现在流行的MVVM开发框架,例如Vue,自身支持下面三个特性,这样能为开发节省大量的工作

  • Model数据变化后通知对应的ViewModel数据更新
  • 用户的操作交互响应通过View转发给ViewModel(DOM节点自动绑定事件)
  • ViewModel数据变化后通知对应的View更新界面视图(界面自动绑定数据)

参考文章:

前端MV*

标签:nal   架构设计   ref   架构   control   cbe   nload   res   .com   

原文地址:http://www.cnblogs.com/lusen/p/5989894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!