写在前面:在工作中使用或看到一个知识点,不熟悉就做一个记录,教程中涉及到不太熟悉、或掌握不深的知识点,就关联去做掌握。
1、混入Mixins
混入,组件A中调用mixin混入对象M(任意data、methods等组件选项),调用后,M的选项将被“混合”到组件A本身的选项.
PS:可作为公用组件初始化使用。
使用场景:公用部分:data混入steps、computed全局store中数据、mounted初始化步骤条
涉及到关联的知识点:
directives、Vue.extend()、自定义选项this.$options、插件
示例:
var mixin = {
data() {
return { messge: '混入对象M' }, // 混入data
},
methods: {}, // 混入methods
created() {
// 混入的钩子函数
},
};
new Vue({
mixins:[mixin],
data() { return { message: '组件A' }},
methods: {...}
})
合并规则:
- 同名data对象,递归合并,发生冲突时以组件A数据优先,
- 同名钩子函数如created,将合并为一个数组,都会被调用,且混入对象M的钩子在组件前调用,
- 其他值为对象的,如 methods、components 和
directives,将合并成同一对象,键名冲突时,取组件对象A的键值对。 PS:Vue.extend()也使用此合并策略
全局混入
谨慎使用,大多数情况下,只应当应用于自定义选项
OPTIONS,如示例。推荐将其作为插件(cn.vuejs.org/v2/guide/pl…)发布,以避免重复应用混入。
// 为自定义的选项 'myOption' 注入一个处理器。
Vue.mixin({
created: function () {
var myOption = this.$options.myOption
if (myOption) {
console.log(myOption)
}
}
})
new Vue({
myOption: 'hello!'
})
// => "hello!"
2、export和export default
to do
3、directives
to do
4、Vue.extend()
todo
5、$options
todo