在#NUXT.JS中存储通用组件方法的位置

时间:2018-01-04 04:45:27

标签: javascript vue.js nuxt.js

其实我想知道在#NUXT.JS中存储常用组件方法的位置。

我尝试过的事情。 - >在中间件中存储公共代码(无用)因为根据我的知识,中间件只能处理对服务器的请求和响应。

methods: {

  // states methods.
  SwitchManager: function (__dataContainer, __key, __value) {
    // stand alone debugger for this module.
    let debug = __debug('computed:_3levelSwitch')
    // debug showing function loaded.
    debug('(h1:sizeCheck) creating switch..')
    // switch.
    switch (__key) {
      // fake allow set value to true of given key
      default:
        this[__dataContainer][__key][__value] = true
        break
    }
    return this[__dataContainer][__key][__value]
  },
  SizeCheck: function (__size) {
    // stand alone debugger for this module.
    let debug = __debug('tags:p')
    // debug showing function loaded.
    debug('(p:sizeCheck) checking..')
    // init switch.
    this.SwitchManager('pill', 'size', __size)
  },
  StateCheck: function (__state) {
    // stand alone debugger for this module.
    let debug = __debug('tags:h1')
    // debug showing function loaded.
    debug('(h1:sizeCheck) checking..')
    // init switch.
    this.SwitchManager('pill', 'state', __state)
  }
},
created () {
  // h1 tag size check
  this.SizeCheck(this.size)
  this.StateCheck(this.state)
}

1 个答案:

答案 0 :(得分:37)

我和普通的vue.js一样去mixins。唯一的区别 - 对于全局混合 - 我将它们作为插件包含在内,但首先是:

非全球混合

我会为我的mixins创建一个额外的文件夹。例如,在/mixins/testMixin.js

export default {
  methods: {
    aCommonMethod () {}
  }
}

然后导入布局,页面或组件,并通过mixins对象添加它:

<script>
  import commonMixin from '~/mixins/testMixin.js
  export default {
    mixins: [commonMixin]
  }
</script>


Global mixins

例如,在新文件plugins/mixinCommonMethods.js中:

import Vue from 'vue'

Vue.mixin({
  methods: {
    aCommonMethod () {}
  }
})

然后将该文件包含在nuxt.config.js

plugins: ['~/plugins/mixinCommonMethod']

之后,您可以将该方法随处可用,并使用this.commonMethod()进行调用。但是这里有来自vue.js文档的建议:

  

稀疏地使用全局mixins,因为它会影响每个创建的Vue实例,包括第三方组件。在大多数情况下,您只应将其用于自定义选项处理,如上例所示。将它们作为插件发送以避免重复应用也是一个好主意。


注入$ root&amp;上下文

另一种可能性是 Inject in $root & context