Vue知识点发散,以汇聚

193 阅读1分钟

写在前面:在工作中使用或看到一个知识点,不熟悉就做一个记录,教程中涉及到不太熟悉、或掌握不深的知识点,就关联去做掌握。

1、混入Mixins

混入,组件A中调用mixin混入对象M(任意data、methods等组件选项),调用后,M的选项将被“混合”到组件A本身的选项.

PS:可作为公用组件初始化使用。

使用场景:公用部分:data混入steps、computed全局store中数据、mounted初始化步骤条

涉及到关联的知识点: directivesVue.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