vue 父组建获取子组建方法为获得_vue实现思想分享和探讨
vue主要的几个函数
observer
watcher
Dep
compile
基本调用流程
new Vue()都做了什么
function
1,option 就是我们传过来的参数 比如下面newVue里面这部分
var
2 判断当前运行环境 以及是否继承自Vue
3 初始化函数 _init() 函数
Vue
上面对init函数的执行逻辑做了简单的备注,下面我们来仔细探讨每个函数的具体内部结构
resolveConstructorOptions() 这个函数是解析构造函数参数的作用
export
从上面的代码可以看出解析参数分为两种情况
1 当调用Vue.extend时执行 if(Ctor.super){}中的代码块,首先,递归获取到父类中的options
和子类的options进行比较,如果如果子类和父类不一致,更新子类中的options,然后检测子类的option是否发生变化,如果有的变化,返回变化的options,并且将父类中的option和子类中的option进行合并。
2 当调用 new Vue()时,直接返回options
初始化属性
上次大概聊了一下参数合并相关的代码逻辑,今天我们聊一聊初始化属性的逻辑
initLifecycle(vm) :参数合并完成之后,会执行左边的这个方法,参数是一个vue对象,源码如下
export
通过探讨以上代码,我们发现,这个方法就干了一件事,找出组建之间的依赖关系,也就是实列之间的依赖关系,比如,谁是谁的子级,谁是谁的父级,然后将这个关系挂载到vue这个根实列上面。
抽象组建或者抽象类
在我们平常写的组建当中,或多或少都需要渲染一些dom,有一些直观上的表现,比如一个弹框组建等等。。,所谓抽象组建是不渲染任何dom的,只是作为一种处理逻辑的方法或者一种数据结构,比如 vue中的keep-alive 组建,或者 transition组建