一、全局混入插件

Vue.mixin( mixin )
用法:

全局注册一个混入,影响注册之后所有创建的每个 Vue 实例(比如我们打开一个菜单页面,但是里面使用了很多我们的组件如<my-table>等,每个这个组件也是会被这个全局混入影响)。插件作者可以使用混入,向组件注入自定义的行为。不推荐在应用代码中使用(推荐在制作插件时使用

  • 全局混入插件制作
const install = function (Vue) {
    Vue.mixin({
    // 插件注入组件选项
        data () {
        },
        created () {
        //打印看看
          console.log('d', this.$options._componentTag || this.$options);
            }
        },
        methods: {
        getData (val) {
			//逻辑
                return ...
            },
        }
    });
};
export default { install }
  • 上面代码的打印结果(这是我再进入首页时结果)可以看出:
    在这里插入图片描述

这个全局混入影响了这一次页面加载时所有的Vue实例,并且其中最前部分还有一些是Vue得生命周期部分,我们可以通过这里依次获得Vue实例的初始化选项this.$options.myOptions,即当加载到这个初始化选项时进行一些操作(如去加载后端字典数据)

export default {
  components: {
  },
  myOption: ['123'],// 初始化选项
  data() {
    return { 
    }
  }
  ...
  • 完成了上面的全局混入插件,然后在入口js(如main.js
Vue.use(dicts);

**安装 Vue.js 插件**。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法调用时,会将 Vue 作为参数传入。

该方法需要在调用 new Vue()之前被调用。(我们的export default {初始化Vue实例一样)

当 install 方法被同一个插件多次调用,插件将只会被安装一次。

二、局部混入

import InfoApi from '$qn/code/mixin/info'
export default {
  components: {
  },
  mixins: [InfoApi], //局部混入后,在实例上可以获取到混入对象(其中js中的方法),并以此访问接口
  ...
  • 选项合并
    当混入对象和组件有对象时,优先执行组件内的同名对象,发生冲突时以组件数据优先。

ok,到这里\(^o^)/~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐