2018-08-17--Vue技术内幕摘记4

2018-09-10  本文已影响0人  安乐_f487

Vue选项的合并策略

1.选项 el、propsData 的合并策略

el,propsData的策略函数

说明: el 选项或者 propsData 选项只能在使用 new 操作符创建实例的时候可用

子组件中使用el,就会被警告

引出问题----------从策略函数中,可以看出,如果vm不存在,则说明是子组件,什么原因:

vm来自mergeOptions中的第三个参数,而在 _init 方法中调用 mergeOptions 函数时,第三个参数就是当前 Vue 实例;

由if(!vm)语句,可以猜测到

而子组件的实现方式就是通过实例化子类完成的,子类又是通过 Vue.extend 创造出来的

2.选项 data 的合并策略

比较复杂,总的来说,被mergeOptions函数处理后,data选项是一个函数,有3种返回的可能

相关的3点展开(补充):

具体--初始化中继续

3.生命周期钩子选项的合并策略

--合并成数组,数组元素是函数

--mixin??

4.资源(assets)选项的合并策略--在 Vue 中 directives、filters 以及 components 被认为是资源,因为三者都可以由第三方提供

使用extend函数合并

--延伸:解释了不用声明,就可以使用Vue的内置组件

5. 选项 watch 的合并策略

合并父子,合并结果可能是一个数组,也可能是一个函数(父选项中没有 watch 选项,则直接返回 childVal,即返回的就是一个函数,而非数组)

6.  选项 props、methods、inject(使用 inject 选项来接收指定的我们想要添加在这个实例上的属性,和provide选项一起使用)、computed 的合并策略---使用extend函数合并,返回一个对象

7. 选项 provide(允许我们指定我们想要提供给后代组件的数据/方法) 的合并策略

--与 data 选项的合并策略相同,都是使用 mergeDataOrFn 函数

合并策略总结

8. 回顾mergeOptions函数中的对于extends和mixins的处理

extends 和 mixins
上一篇下一篇

猜你喜欢

热点阅读