作家
登录

前端MVC变形记

作者: 来源: 2017-07-25 12:05:03 阅读 我要评论

这种大年夜经典MVC到Javascript MVC的1对1转化,导致控制器的角色有点难堪。MVC如许的构造的┞俘确性在于,任何界面都须要面对一个用户,而controller “是用户和体系之间的链接”。在经典MVC中,controller要做的工作多半是派发用户输入给不合的view,并且在须要的时刻大年夜view中获取用户输仁攀来更改model,而Web以及绝大年夜多半如今的UI体系中,controller的职责已经被体系实现了。因为某种原因,控制器和视图的分界线越来越模糊,也有认为,view启动了action理论上应当把view归属于controller。比如在Backbone中,Backbone.View和Backbone.Router一路承担了controller的义务。这就为MVC中controller的衍变埋下了伏笔。

MVP

  1. // controller: 
  2. function PhoneListCtrl($scope) { 
  3.   // 数组中存储的对象是手机数据列表 
  4.   $scope.phones = [ 
  5.     {"name""Nexus S"
  6.      "snippet""Fast just got faster with Nexus S."}, 
  7.     {"name""Motorola XOOM™ with Wi-Fi"
  8.      "snippet""The Next, Next Generation tablet."}, 
  9.     {"name""MOTOROLA XOOM™"
  10.      "snippet""The Next, Next Generation tablet."
  11.   ]; 

背景:

MVP(model-view-Presenter)是经典MVC设计模式的一种衍生模式,是在1990年代Taligent公司创造的,一个用于C++ CommonPoint的模型。背景上不再考据,直接上图看一下与MVC的不合。

MVP模式

经典MVC中,一对controller-view绑缚起来表示一个ui组件,controller直接接收用户输入,并将输入转为响应敕令来调用model的接口,对model的状况进行修改,最后经由过程不雅察者模式对view进行从新衬着。

另一个显而易见的不合在于,MVC是一个圆,一个轮回的过程,但MVP不是,依附Presenter作为核心,负责大年夜model中拿数据,填充到view中。常见的MVP的实现是被动视图(passive view),Presenter不雅察model,不再是view不雅察model,一旦model产生变更,就会更新view。Presenter有效地绑定了model到view。view裸露了setters接口以便Presenter可以设置数据。对于这种被动视图的构造,没有直接数据绑定的概念。然则他的好处是在view和model直接供给更清楚的分别。然则因为缺乏数据绑定支撑,意味着不得不零丁存眷某个义务。在MVP里,应用法度榜样的逻辑重要在Presenter来实现,个中的view是很薄的一层。

MVVM

  1. <GroupBox Header="绑定对象"
  2.     <StackPanel Orientation="Horizontal" Name="stackPanel1"
  3.         <TextBlock Text="学号:"/> 
  4.         <TextBlock Text="{Binding Path=StudentID}"/> 
  5.         <TextBlock Text="姓名:"/> 
  6.         <TextBlock Text="{Binding Path=Name}"/> 
  7.         <TextBlock Text="入学日期:"/> 

      推荐阅读

      安全理论:学习如何应对网络恐怖活动

    【51CTO.com快译】关于收集恐怖晃荡的消息近期层出不穷。全世界正在遭受不合程度的收集恐怖主义,包含真正的恐>>>详细阅读


    本文标题:前端MVC变形记

    地址:http://www.17bianji.com/lsqh/36386.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)