Vue的运行机制

1. 初始化
在 new Vue() 之后。 Vue 会调用 _init 函数进行初始化
初始化过程:
①初始化生命周期、事件、 props、 methods、 data、 computed 与 watch 等
②通过 Object.defineProperty 设置 setter 与 getter 函数,用来实现「响应式」以及「依赖收集」

2.挂载组件
调用$mount挂载组件

3.编译
*(如果是运行时编译,即不存在render function但是存在template的情况,需要进行编译步骤。)
①parse(解析):利用正则将模板转换成抽象语法树(AST);
②optimize(标记静态节点做优化): 标记静态节点,以后update的时候,diff算法可以跳过静态节点
③ generate(转成字符串):将抽象语法树(AST)转成字符串,供render去渲染DOM
经过以上步骤,就可以得到render funciton

4. 响应式
当 render function 被渲染时,会对data对象进行数据读取,所以会触发 getter 函数进行依赖收集,依赖收集的目的是将data里的属性放到观察者(Watcher)的观察队列中
在修改对象的值的时候,会触发对应的 setter, setter 通知观察者数据变化,需要重新渲染视图。观察者调用 update 来更新视图

5.虚拟DOM
render funtion 会被转换成虚拟DOM
虚拟DOM实际上就是一个JS对象,从顶层DOM层层描述DOM,有tag, children, isStatic, isComment等等许多属性来做DOM描述

6. 更新视图
updata时,会将新旧VNode 一起传入 patch,经过 diff 算法得出它们的差异,将差异所对应的 DOM 进行修改

Vue运行机制

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值