vue双向数据绑定的原理?

简介: vue双向数据绑定的原理?

Vue双向数据绑定的原理是通过数据劫持和发布-订阅模式实现的。

数据劫持:Vue通过Object.defineProperty()方法劫持了数据对象的属性,使得在获取和设置属性值时可以触发相应的方法。

发布-订阅模式:Vue利用发布-订阅模式建立了一个观察者模式,当数据发生变化时,会触发对应的订阅者回调函数。

具体实现步骤如下:

  1. 首先,Vue会创建一个Observer对象,用来劫持数据对象的每个属性。在该对象中会使用Object.defineProperty()方法对每个属性进行劫持,并为每个属性创建一个Dep对象。
  2. 当数据对象中的属性被访问时,会触发Object.defineProperty()方法的get方法。在get方法中,会将当前的Watcher对象添加到Dep对象中。同时,如果订阅者(target)存在,则将Dep对象添加到该订阅者的deps数组中。
  3. 当数据对象中的属性被修改时,会触发Object.defineProperty()方法的set方法。在set方法中,会遍历Dep对象的subs数组,即订阅该属性的所有Watcher对象,然后通过调用Watcher对象的update方法来更新视图。
  4. 在数据对象中的每个属性被访问时,会调用Dep对象的notify方法,该方法会遍历deps数组,然后通过调用每个Dep对象的notify方法来通知订阅该属性的所有Watcher对象调用update方法更新视图。

总结起来,Vue通过数据劫持和发布-订阅模式实现了双向数据绑定。当数据发生变化时,会通知到所有订阅该数据的Watcher对象,然后调用其update方法来更新相应的视图。

目录
相关文章
|
3天前
|
缓存 监控 JavaScript
探讨优化Vue应用性能和加载速度的策略
【5月更文挑战第17天】本文探讨了优化Vue应用性能和加载速度的策略:1) 精简代码和组件拆分以减少冗余;2) 使用计算属性和侦听器、懒加载、预加载和预获取优化路由;3) 数据懒加载和防抖节流处理高频事件;4) 图片压缩和选择合适格式,使用CDN加速资源加载;5) 利用浏览器缓存和组件缓存提高效率;6) 使用Vue Devtools和性能分析工具监控及调试。通过这些方法,可提升用户在复杂应用中的体验。
10 0
|
4天前
|
JavaScript 前端开发
vue(1),小白看完都会了
vue(1),小白看完都会了
|
3天前
|
JavaScript 开发工具 git
Vue 入门系列:.env 环境变量
Vue 入门系列:.env 环境变量
10 1
|
3天前
|
JavaScript
vue知识点
vue知识点
11 0
|
4天前
|
JavaScript 前端开发 定位技术
Vue使用地图以及实现轨迹回放 附完整代码
Vue使用地图以及实现轨迹回放 附完整代码
Vue使用地图以及实现轨迹回放 附完整代码
|
5天前
|
JavaScript 前端开发 开发者
vue 的双向数据绑定的原理
vue 的双向数据绑定的原理
37 0
|
6月前
|
存储 设计模式 JavaScript
简单小示例彻底搞明白vue双向数据绑定核心原理
vue 很大的一个优势就是双向数据绑定,而在 react 或小程序中是需要我们自己手动 setState、setData 去修改视图数据
52 0
|
JavaScript 前端开发
vue相关面试题2:1.封装vue组件作用;2双向数据绑定原理;3.Router 是什么;4.导航钩子有哪些
它们有以下参数。 ●to::即将要进入的目标路由对象。 ●from:当前导航正要离开的路由。 ●next: 一定要用这个函数才能到达下一个路由,如果不用就会遭到拦截。
234 0
|
4天前
|
JavaScript 数据库
ant design vue日期组件怎么清空 取消默认当天日期
ant design vue日期组件怎么清空 取消默认当天日期