Module 无模板组件

Module 无模板组件,module,vuejs2,components,structure,Module,Vuejs2,Components,Structure,我有一些代码可以对服务器进行api调用并返回一些JSON 它确实作为一个方法存在于我的组件中,但由于它变得有点长,我想将它提取到它自己的文件中 在vuejs中,这里的最佳实践是什么 它应该是没有模板的组件吗?这是怎么回事 我会创建一个es6模块吗 我建议在这里使用mixin 在myCoolMixin.js这样的文件中定义您的mixin export default { methods: { myAwesomeMethod() { //do something

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

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

在vuejs中,这里的最佳实践是什么

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

  • 我会创建一个es6模块吗


    • 我建议在这里使用mixin

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

      export default {
         methods: {
            myAwesomeMethod() {
               //do something cool...
            }
         }
      }
      
      您可以像组件一样定义mixin中的任何内容。e、 数据对象、计算或监视的属性等。然后您只需在组件中包含mixin

      import myCoolMixin from '../path/to/myCoolMixin.js'
      
      export default {
         mixins: [myCoolMixin],
         data: function() {
            return: {
               //... 
            }
          },
          mounted: function() {
             this.myAwesomeMethod(); // Use your method like this!  
          }
       }
      

      有关mixin的更多信息,请点击此处:

      mixin工作,或者您可以创建一个插件。以下是文档示例:

      MyPlugin.install = function (Vue, options) {
        // 1. add global method or property
        Vue.myGlobalMethod = function () {
          // something logic ...
        }
      
        // 2. add a global asset
        Vue.directive('my-directive', {
          bind (el, binding, vnode, oldVnode) {
            // something logic ...
          }
          ...
        })
      
        // 3. inject some component options
        Vue.mixin({
          created: function () {
            // something logic ...
          }
          ...
        })
      
        // 4. add an instance method
        Vue.prototype.$myMethod = function (methodOptions) {
          // something logic ...
        }
      }
      

      我喜欢这个答案,并且肯定会研究插件,不过我认为mixin更适合这里。谢谢。我个人倾向于使用混合插件,只有当我有一个大的功能集共享Commanility时,我才会选择插件,这是一种极好的重用代码的方式。谢谢你说得这么清楚。它看起来很像旧的AngularJS服务:)关于mixin的重要注意事项:它影响所有组件和子组件。虽然它作为项目的全局库(仅方法)工作,但在mixin的“已装入”或“已创建”挂钩中进行处理将执行该处理脚本,其执行次数与所有装入入口点的已装入组件和子组件的数量相同