没有模板的组件

LeB*_*eau 15 components module structure vuejs2

我有一些代码对服务器进行api调用并返回一些JSON.

它确实作为我的组件中的一个方法存在,但由于它有点长,我想将它提取到它自己的文件中

在vuejs这里最好的做法是什么.

  • 它应该是没有模板的组件吗?这怎么样?

  • 我会创建一个es6模块吗?

skr*_*ibe 11

我建议在这里使用mixin.

在像myCoolMixin.js这样的文件中定义你的mixin ......

export default {
   methods: {
      myAwesomMethod() {
         //do something cool...
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

您可以像组件一样在mixin中定义任何内容.例如,数据对象,计算或监视的属性等.然后,您只需在组件中包含mixin.

import myCoolMixin from '../path/to/myCoolMixin.js'

export default {
   mixins: [myCoolMixin],
   data: function() {
      return: {
         //... 
      }
    },
    mounted: function() {
       this.myAwesomeMethod(); // Use your method like this!  
    }
 }
Run Code Online (Sandbox Code Playgroud)

有关Mixins的更多信息,请访问:https://vuejs.org/v2/guide/mixins.html

  • @Raywell你将其与[全局mixin](https://vuejs.org/v2/guide/mixins.html#Global-Mixin)混淆了。如果您像这个答案中那样添加 mixin - 通过 `mixins: [myCoolMixin]` - 那么它只会添加到该组件中。 (2认同)