Vue的响应式编程

Vue 的响应式编程是其核心特性之一,它使得数据和视图之间的同步变得自动化和透明。

以下是 Vue 响应式编程的主要概念和工作机制:

1. 响应式数据: 在 Vue 中,当你将一个普通的 JavaScript 对象传递给 Vue 实例作为其 `data` 选项时,Vue 会遍历此对象的所有属性,利用 Object.defineProperty 方法对对象的属性进行劫持 将它们转换为 getter/setter。这是 Vue 的响应式系统的基础。getter是在数据使用时触发,setter是在数据被修改时触发。

2. 依赖收集: 当渲染函数被首次执行时,Vue 会追踪正在读取的属性,这些属性的 getter 被调用,从而将当前的视图(组件)作为订阅者添加到这些属性的依赖列表中。

3. 变更检测: 当响应式数据发生变化时(setter 被调用),通知所有依赖于这些数据的视图或计算属性进行更新

4. 异步更新队列: Vue 在观察到数据变化时,并不会立即更新 DOM,而是将更新(watcher)推入到一个异步队列。在下一个事件循环“tick”中,Vue 清空队列并执行实际(批量)更新。这种机制可以避免不必要的多次更新,提高性能。

5. 计算属性和侦听器: 计算属性是基于它们依赖的数据计算得出的值。Vue 自动追踪计算属性的依赖,并仅在依赖发生变化时重新计算。侦听器则用于执行当数据变化时的更复杂的操作。

6. 虚拟 DOM: Vue 使用虚拟 DOM 作为其响应式和渲染策略的一部分。当依赖的数据发生变化时,Vue 会生成一个新的虚拟 DOM 树,并与旧树进行比较,然后高效地更新 DOM。使用虚拟DOM成本低,速度快,

Javascript对象中,虚拟DOM 表现为一个 Object对象。并且最少包含标签名 (tag)、属性 (attrs) 和子元素对象 (children) 三个属性,不同框架对这三个属性的名命可能会有差别

创建虚拟DOM就是为了更好将虚拟的节点渲染到页面视图中,所以虚拟DOM对象的节点与真实DOM的属性一 一照应

通过这些机制,Vue 的响应式系统能够确保 UI 始终与底层数据保持一致,同时保持性能和效率。

你可能感兴趣的:(Vue,vue.js,javascript,前端)