vue2.x源码 数据驱动视图

版本

Vue.js v2.6.14

从生命周期入手

在这里插入图片描述
created生命周期执行完之后执行vm.$mount
在这里插入图片描述

  1. 先执行beforeMount
  2. updateComponent更新组件接口
  3. vm._update执行diff算法
  4. vm._render()执行组件render方法,在编译阶段把组件中的template转化为render()

Watcher

图一
图2

  1. new Watcher主要收集依赖是执行get方法
  2. getter等于updateComponent pushTarget相当于给全局变量Dep.target赋值为当前Watcher pushTarget是弹出当前Watcher
  3. 执行getting相当于执行当前组件render render类似与图二结构
  4. 在获取data里面的数据的时候,由于data被劫持 会执行get方法
    在这里插入图片描述
    在这里插入图片描述

Dep.target 是当前组件的Watcher
在这里插入图片描述
在这里插入图片描述

  1. 把当前组件watcher存在对应属性的依赖里面
  2. 当数据更新后执行dep.notify()
  3. 遍历依赖 通知执行update 执行diff

整体流程

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值