vue源码解析

 

 

 

 

 

 

 

入口

 

 

 

在runtime经过再次扩展

 

 

在core下的index再次被扩展

 

 

 最后是core的instance里是真正的vue构造函数

继续扩展vue实例

 

init方法开始初始化vue,使用闭包为每个实例产生一个uuid

 

 

 

 

 

在initState中处理prop、methods、data、computed、watch

 

通过bind方法将vue实例传递至methods中的方法,然后挂载到vue实例上,就能通过this直接调用该方法

 

 

处理data之前的一些准备工作

initData方法,这里是响应式的入口

在observe中遍历data中的所有属性,添加响应式配置,每个属性都new一个自己的dep对象收集所有关联的watcher实例,并且还要收集父属性关联的watcher

 

 

 

 再然后通过observe模块添加响应式

 

 

 

 

 最后继续回归vue构造过程,继续从observer开始

 

弄过new一个响应式对象开始对data进行响应式处理,判断NaN可以用val !== val判断

 

 最后是watcher类

只有当dirty为true时,绑定的computed才会被重新计算

最后回到initState的initData方法,接着处理watch和computed,也是通过创建watcher

 

 

 

 最后是调用mountcomponent挂载

 

posted @ 2022-10-20 00:16  姜小希  阅读(93)  评论(0编辑  收藏  举报