vue响应式原理(数据双向绑定的原理) (vue 图解10)

在这里插入图片描述

MVC模式

MVC的全称是Model-View-Controller,模型-视图-控制器,整个结构分成三层:
1. 最上面一层,视图层(View):用户界面(UI)
2. 最底层,是核心的“数据层”:保存数据
3. 中间层,控制层(Controller):处理业务逻辑,负责根据用户从“视图层”输入的指令,选取“数据层”的数据,然后对其进行相应的操作,产生最终的结果

各部分的通信方式如下:
- View传送指令到Controller
- Controller完成业务逻辑后,要求Model改变状态
- Model将新的数据发送到View,用户得到反馈

所有通信都是单向的。
在这里插入图片描述

在这里插入图片描述

MVP

MVP模式将Controller更名为Presenter,同时改变了通信方向
1. 各部分的通信都是双向的
2. View与Model不发生联系,都通过Presenter传递;(View和Model之间不能直接进行交互,必须通过Presenter来交流数据;)
3. View不部署任何业务逻辑,成为“被动视图”,而所有业务逻辑都部署在 Presenter

MVP与其说是设计模式,还不如说是一种程序架构范式,说明了我们应该怎样更好的组织整个项目的代码和资源。

在这里插入图片描述
M:Model层,数据服务层,负责数据的增删改查。在服务端就包括mysql数据库操作、本地cache等;在客户端就包括调用服务器API、各种形式的数据缓存等。有些朋友将Model层理解为数据模型层,数据模型归根结底是数据,设计数据模型是为了在面向对象的程序设计中更好的表达数据。所以数据模型贯穿于整个应用程序,不应该将Model层单单理解为是数据模型。但Model层往往负责将接收到的数据转化为相应的数据模型供上层使用。

V:View层,视图界面层,负责UI的渲染、子视图的组织、UI事件、用户交互等。在有些网友看来,View层是比较轻的一层,大多数时候只需要调用系统的UI控件,绑定需要的UI事件就完事了,很多平台甚至拖拖控件就行。但是实际上是因为平台为我们做了大多数的事,我们不需要去考虑怎么有效的渲染界面,也不需要去考虑怎样去实现各种各样的交互事件(触摸),只需要关注应用本身就可以了。

P:Presenter层,有得朋友将其叫作发布者,百度翻译为主持人,笔者觉得后者更贴切些。 Presenter既是中间人,在View和Model之间起到桥梁的作用,又是一个独立的大模块,封装了业务的复杂度,将UI和业务逻辑拆分开来,使UI和业务都可以独立的进行变化。从整体的数据流向上看,Presenter从Model层获取数据,并通过接口发送给View层展示;View层将用户交互传递给Presenter,由Presenter完成相应的业务逻辑,这其中可能会有Model层的参与,比如Presenter调用Model层的接口来保存数据。

参考链接

在这里插入图片描述
View与Presenterd 交互更为频繁。。

在这里插入图片描述

MVVM模式

MVVM模式将Presenter更名为ViewModel(对应MVC中的C-controller),基本上与MVP模式一致。唯一区别MVVM采用双向数据绑定,View的变动自动反应在ViewModel上。
- M(model):模型—javascript object,代表真实情况的内容(一个面向对象的方法)、或表示内容(以数据为中心的方法)的数据访问层
- V(view):视图—用户界面(UI)
- Viewmodel:在vue中指vue实例对象,是一个公开公共属性和命令的抽象的view;是一个转值器,负责转换Model中的数据对象,来让对象变得更容易管理和使用。

View的变化会自动更新到ViewModel,ViewModel的变化也会自动同步到View上显示。这种自动同步是因为ViewModel中的属性实现了Observer,当属性变更时都能触发对应的操作。

数据双向绑定:

所谓的双向绑定,就是view的变化能反映到ViewModel上,ViewModel的变化能同步到view上

在这里插入图片描述

vue的定义:

 1. vue是一套用于构建用户界面的渐进式框架
 2. vue是一款基于MVVM方式的轻量级的框架
 3. vue是一款基于数据驱动、组件化思想的框架
 4. vue被设计为可以自底向上、逐层应用的框架
 5. vue的核心库只关注视图层,易于上手,还便于与第三方库或既有项目整合
 6. 当与现代化的工具链以及各种支持类库结合使用时,vue也完全能够为复杂的单页应用提供驱动

参考链接,很是不错的整理!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值