原理

1、vue双向数据绑定原理,又称vue响应式原理,是vue的核心,双向数据绑定是通过数据劫持结合发布者订阅者模式的方式来实现的,通过Object.defineProperty()来劫持各个属性的 settergetter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图。也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变

2、vue实现双向数据绑定的核心是Object.defineProperty()方法

3、Object.defineProperty(obj, prop, descriptor)方法,接收三个参数,分别为obj(定义其上属性的对象)prop(定义或修改的属性)descriptor(具体的改变方法),就是用这个方法来定义一个值,当调用时我们使用了它里面的get方法,当我们给这个属性赋值时,又用到了它里面的set方法

具体步骤:

第一步: 需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上 settergetter
这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化

第二步: compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图

第三步: Watcher订阅者是ObserverCompile之间通信的桥梁,主要做的事情是:
1、在自身实例化时往属性订阅器(dep)里面添加自己
2、自身必须有一个update()方法
3、待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退。

第四步: MVVM作为数据绑定的入口,整合ObserverCompileWatcher三者,通过Observer来监听自己的model数据变化,通过Compile来解析编译模板指令,最终利用Watcher搭起Observer和Compile之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据model变更的双向绑定效果。

Vue 双向数据绑定原理相关推荐

  1. vue双向数据绑定原理分析--Mr.Ember

    vue双向数据绑定原理分析 摘要 vue常用,但原理常常不理解,下面我们来具体分析下vue的双向数据绑定原理. (1)创建一个vue对象,实现一个数据监听器observer,对所有数据对象属性进行监听 ...

  2. vue双向数据绑定原理 1

    1. 原理 1.1 vue双向数据绑定原理,又称vue响应式原理,是vue的核心,双向数据绑定是通过数据劫持结合发布订阅模式的方式来实现的,也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化 ...

  3. 分析Vue双向数据绑定原理以及简单实现MVVM

    前言 随着Vue的火热发展,越来越多的程序员并不满足于对框架的使用,更多地追求其内在的原理,就像不能沉沦于美丽的外表,更应该追求灵魂的高度. 正文 好了,废话不多说,接下来我们将通过俩方面开展我们对外 ...

  4. “别具一格”的vue双向数据绑定原理

    背景和一点点看法 见网上许多文章讲vue双向数据绑定一开口就大谈 Object.defineProperty 和 proxy.其实不然.这是vue中响应式的"基石". vue 中有 ...

  5. 前端面试题 HTML5 CSS3(盒子模型、盒子水平垂直居中、经典布局) JS(闭包、深浅克隆、数据劫持和拦截) 算法(排序、去重、数组扁平化) Vue(双向数据绑定原理、通信方式)

    前端面试题 HTML5 相关面试题 CSS3 相关面试题 盒子模型 盒子水平垂直居中的方案 经典布局方案 圣杯布局 双飞翼布局 flex布局 定位方式布局 css实现三角形 JS 相关面试题 8种数据 ...

  6. 理解VUE双向数据绑定原理和实现

    一.原理: 1.vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变: 2.核心:关于VUE双向数 ...

  7. vue双向数据绑定原理学习

    vue源码 1.双向数据绑定 学习数组的reduce函数 var arr = [2,4,5,67,78,5,1] // arr.reduce(函数,初始值) // arr.reduce((上次的初始值 ...

  8. vue双向数据绑定原理

    什么是双向数据绑定?Vue是一个MVVM框架,数据绑定简单来说,就是当数据发生变化时,相应的视图会进行更新,当视图更新时,数据也会跟着变化. 实现数据绑定的方式大致有以下几种: - 1.发布者-订阅者 ...

  9. 面试题 请简述vue双向数据绑定原理

    MVVM模式 MVVM模式就是Model–View–ViewModel模式.它实现了View的变动,自动反映在 ViewModel,反之亦然.就是在单向绑定的基础上给可输入元素(input.texta ...

最新文章

  1. 【解惑】这么多技术我该怎么学 [转]
  2. C++中不允许重复定义全局变量
  3. 蓝桥杯-最短路(floyd算法)
  4. Comware、VRP、IOS这些操作系统平台你分清了吗?
  5. 任务调度的使用crontab
  6. UC浏览器屏幕亮度在哪设置 UC浏览器屏幕亮度调节方法2019
  7. Jmeter - 服务器性能检测
  8. 3.1.1 zabbix(上)
  9. 随机数生成器与线性同余法产生随机数
  10. 机器学习实战 基于_资料 |《机器学习实战:基于 Scikit-Learn、Keras 和 TensorFlow(第二版)》...
  11. 博弈论学习 | 第六章 Games
  12. ZXing和Zbar扫描 条形码ZBAR_I25 和ITF14码制扫描
  13. java overload_java之方法重载(overload)
  14. 微软2015校园招聘 技术类职位在线笔试-题目1 : Browser Caching
  15. win10 截屏自带快捷键(矩形,任意图形)
  16. php雅思老师,雅思口语话题:最喜欢的老师
  17. 深圳40年灯光秀之LED显示屏显示技术
  18. Hank的无线802.11学习笔记--part 4
  19. 活动创意来源和感想思考
  20. delphi+python混合编程

热门文章

  1. 免费的插画素材网站有哪些?
  2. 去掉h1 h2 h3 h4加粗并统一字体大小
  3. java锁的底层原理
  4. 火柴人小程序linux,火柴人战争帝国
  5. python调用js批量爆破账号密码
  6. 公司宣传软文怎么写?3个技巧,让你的公司介绍更有逼格
  7. idea 提示Cannot find declaration to go to的解决方法
  8. 已解决Auto-GPT本地部署正确设置谷歌Google浏览器配置
  9. Kaggle座头鲸识别top5解决方案
  10. java pdf数字签名_使用pdfbox的数字签名