一:mixin是什么?
mixin(混入),提供一种非常灵活的方式,来分发vue组件中的可复用功能。 本质是一个js对象,包含了组件中任意功能选项,如:data,components,methods,created,computed等 vue中可以局部混入跟全局混入
全局混入:会影响到每一个组件实例,所以常用于插件的编写
从源码来看:
优先递归处理mixins,先遍历合并parent中的key,调用mergeField方法进行合并,然后保存在变量options,再遍历child,合并补上parent中没有的key,调用mergeField方法进行合并,保存在变量options。再遍历child,合并补上parent中没有的key,调用- mergeField
方法进行合并,保存在变量options
通过 mergeField
函数进行了合并。
vue的几种类型的合并策略: 替换型,合并型,队列型,叠加型。
小结:
替换型策略有props
,methods
,inject
,computed
,就是将新的同名参数替代旧的参数。
合并型策略是data
,通过set
方法进行合并和重新赋值
队列型策略有生命周期函数和watch
,原理是将函数存入一个数组,然后正序遍历依次执行
叠加型有component,directives,filters,通过原型链进行层层的叠加。