vue响应式原理的解析-创新互联

这篇文章将为大家详细讲解有关vue响应式原理的解析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

10年积累的网站制作、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有缙云免费网站建设让你可以放心的选择与我们合作。

响应式原理作为 Vue 的核心,使用数据劫持实现数据驱动视图。在面试中是经常考查的知识点,也是面试加分项。

本文将会循序渐进的解析响应式原理的工作流程,主要以下面结构进行:

  1. 分析主要成员,了解它们有助于理解流程
  2. 将流程拆分,理解其中的作用
  3. 结合以上的点,理解整体流程

主要成员

响应式原理中,Observe、Watcher、Dep这三个类是构成完整原理的主要成员。

  • Observe,响应式原理的入口,根据数据类型处理观测逻辑
  • Watcher,用于执行更新渲染,组件会拥有一个渲染Watcher,我们常说的收集依赖,就是收集 Watcher
  • Dep,依赖收集器,属性都会有一个Dep,方便发生变化时能够找到对应的依赖触发更新
     

下面来看看这些类的实现,包含哪些主要属性和方法。

Observe:我会对数据进行观测

温馨提示:代码里的序号对应代码块下面序号的讲解

// 源码位置:/src/core/observer/index.js
class Observe {
 constructor(data) {
  this.dep = new Dep()
  // 1
  def(data, '__ob__', this)
  if (Array.isArray(data)) {
   // 2
   protoAugment(data, arrayMethods)
   // 3
   this.observeArray(data)
  } else {
   // 4
   this.walk(data)
  }
 }
 walk(data) {
  Object.keys(data).forEach(key => {
   defineReactive(data, key, data[key])
  })
 }
 observeArray(data) {
  data.forEach(item => {
   observe(item)
  })
 }
}

本文名称:vue响应式原理的解析-创新互联
当前网址:http://scyanting.com/article/eccge.html