简体   繁体   English

在 Nuxtjs 中扩展全局 mixin

[英]Extending global mixin in Nuxtjs

I'm on Nuxtjs 2.15.7 and I have a mixin file like this:我在 Nuxtjs 2.15.7 上,我有一个这样的 mixin 文件:

utils.js :实用程序.js:

import Vue from "vue"

if (!Vue.__utils__) {
  Vue.__utils__ = true
  Vue.mixin({ 
    data(){
      return{
         ...
      }
    },
    methods:{
      ...
    }
  })
}

I want to create another global mixin that extend my utils.js, for example:我想创建另一个扩展我的 utils.js 的全局 mixin,例如:

utils-another.js :实用程序-another.js :

import utils from '@/plugins/mixins/utils.js'
import Vue from "vue"

if (!Vue.__utils__) {
  Vue.__utils__ = true
  Vue.mixin({ 
    // ... utils.js codes
    data(){
      return{
         ...
      }
    },
    methods:{
      ...
    }
  })
}

based on some env property i decide to use utils.js or utils-another.js .基于一些 env 属性,我决定使用utils.jsutils-another.js so how can I do that?那我该怎么做呢? I don't want to copy all utils.js codes to utils-another.js , that makes it hard for maintenance.我不想将所有 utils.js 代码复制到 utils-another.js ,这使得维护变得困难。

You can separate the mixin code this way您可以通过这种方式分离 mixin 代码

// example utilsMixin1.js
export default {
  data() {
    return {
      //...
    }
  },
  methods: {
    //...
  }
}

// example utilsMixin2.js
export default {
  data() {
    return {
      //...
    }
  },
}

Thus, you can make two mixins global.因此,您可以将两个 mixin 设为全局。

// utils-another.js:
import utilsMixin1 from '@/plugins/mixins/utilsMixin1.js'
import utilsMixin2 from '@/plugins/mixins/utilsMixin2.js'
import Vue from "vue"

if (!Vue.__utils__) {
  Vue.__utils__ = true
  Vue.mixin({
    mixins: [utilsMixin1, utilsMixin2], // utils.js codes
  })
}

or using only one mixin或者只使用一个 mixin

// utils-another.js:
import utilsMixin1 from '@/plugins/mixins/utilsMixin1.js'
import Vue from "vue"

if (!Vue.__utils__) {
  Vue.__utils__ = true
  Vue.mixin({
    mixins: [utilsMixin1], // utils.js codes
  })
}

Use global mixins sparsely and carefully, because it affects every single Vue instance created, including third party components.谨慎使用全局mixins ,因为它会影响创建的每个 Vue 实例,包括第三方组件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM