相信大家对vue的生命周期都很了解,但是对于每个生命周期都干了些什么呢?下面主要讲在vue的beforeCreate 这个生命周期的时候都做了什么,官方说明进行了事件和什么周期的初始化。
其实实际代码里主要做了一下四件事,在函数中 Vue.prototype._init 查看
1.处理该实例的初始化选项---vm.$options
2.初始化生命周期---initLifecycle
3.初始化事件---initEvents
4.初始化render函数---initRender
第一步分两种情况进行处理: 一、是否是组件进行实例化,二、实例化非组件Vue对象
亮代码,在 _init 函数中
Vue.prototype._init = function (options) { //省略部分代码 // merge options if (options && options._isComponent) { // 如果是组件安装组件的方式进行组件的vm.$options属性初始化 // optimize internal component instantiation // since dynamic options merging is pretty slow, and none of the // internal component options needs special treatment. initInternalComponent(vm, options); } else { // 不是组件 将传入的参数 options 与 构造函数上的属性options (通过全局混入定义的)进行合并 ,合并 // 时根据是否有自定义合并策略进行合并Vue.config.optionMergeStrategies ,合并后赋值给当前实例的$options 属性 vm.$options = mergeOptions( resolveConstructorOptions(vm.constructor), //返回构造函数的options属性 options || {}, vm ); }