Module 无模板组件
我有一些代码可以对服务器进行api调用并返回一些JSON 它确实作为一个方法存在于我的组件中,但由于它变得有点长,我想将它提取到它自己的文件中 在vuejs中,这里的最佳实践是什么Module 无模板组件,module,vuejs2,components,structure,Module,Vuejs2,Components,Structure,我有一些代码可以对服务器进行api调用并返回一些JSON 它确实作为一个方法存在于我的组件中,但由于它变得有点长,我想将它提取到它自己的文件中 在vuejs中,这里的最佳实践是什么 它应该是没有模板的组件吗?这是怎么回事 我会创建一个es6模块吗 我建议在这里使用mixin 在myCoolMixin.js这样的文件中定义您的mixin export default { methods: { myAwesomeMethod() { //do something
- 它应该是没有模板的组件吗?这是怎么回事
- 我会创建一个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的“已装入”或“已创建”挂钩中进行处理将执行该处理脚本,其执行次数与所有装入入口点的已装入组件和子组件的数量相同