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运行机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值