在 Vuejs 中使用混合
Using mixins with Vuejs
我目前正在学习如何使用 Vuejs 开发应用程序。我有一个 main.js 文件,其中包含用于设置 Vue.js 的代码。我用一个新文件 api.js 创建了一个新目录 /mixins。我想将其用作 mixin,以便每个组件都可以使用一个函数来访问我的 api。但是我不知道怎么做。
这是我的 /mixins/api.js
文件:
export default{
callapi() {
alert('code to call an api');
},
};
这是我的 main.js
文件:
import Vue from 'vue';
import VueRouter from 'vue-router';
import VueResource from 'vue-resource';
import { configRouter } from './routeconfig';
import CallAPI from './mixins/api.js';
// Register to vue
Vue.use(VueResource);
Vue.use(VueRouter);
// Create Router
const router = new VueRouter({
history: true,
saveScrollPosition: true,
});
// Configure router
configRouter(router);
// Go!
const App = Vue.extend(
require('./components/app.vue')
);
router.start(App, '#app');
我现在如何以正确的方式包含我的 mixin,以便每个组件都可以访问 callapi()
函数?
您可以使用 Vue.mixin
全局应用 mixin
api.js
------
export default {
methods: {
callapi() {};
}
}
main.js
-------
import CallAPI from './mixins/api.js';
Vue.mixin(CallAPI)
正如 documentation 所述,您应该谨慎使用它:
Use global mixins sparsely and carefully, because it affects every single Vue instance created, including third party components.
如果你想在特定组件而不是所有组件上使用mixin,你可以这样做:
mixin.js
export default {
methods: {
myMethod() { .. }
}
}
component.vue
import mixin from 'mixin';
export default {
mixins: [ mixin ]
}
您可能会考虑的另一件事是使用组件扩展设计模式,即创建一个基础组件,然后在子组件中继承它。它有点复杂,但如果您有许多组件共享许多选项并且可能也继承了模板,则可以保持代码干燥。
如果你有兴趣,我已经写过on my blog。
我目前正在学习如何使用 Vuejs 开发应用程序。我有一个 main.js 文件,其中包含用于设置 Vue.js 的代码。我用一个新文件 api.js 创建了一个新目录 /mixins。我想将其用作 mixin,以便每个组件都可以使用一个函数来访问我的 api。但是我不知道怎么做。
这是我的 /mixins/api.js
文件:
export default{
callapi() {
alert('code to call an api');
},
};
这是我的 main.js
文件:
import Vue from 'vue';
import VueRouter from 'vue-router';
import VueResource from 'vue-resource';
import { configRouter } from './routeconfig';
import CallAPI from './mixins/api.js';
// Register to vue
Vue.use(VueResource);
Vue.use(VueRouter);
// Create Router
const router = new VueRouter({
history: true,
saveScrollPosition: true,
});
// Configure router
configRouter(router);
// Go!
const App = Vue.extend(
require('./components/app.vue')
);
router.start(App, '#app');
我现在如何以正确的方式包含我的 mixin,以便每个组件都可以访问 callapi()
函数?
您可以使用 Vue.mixin
api.js
------
export default {
methods: {
callapi() {};
}
}
main.js
-------
import CallAPI from './mixins/api.js';
Vue.mixin(CallAPI)
正如 documentation 所述,您应该谨慎使用它:
Use global mixins sparsely and carefully, because it affects every single Vue instance created, including third party components.
如果你想在特定组件而不是所有组件上使用mixin,你可以这样做:
mixin.js
export default {
methods: {
myMethod() { .. }
}
}
component.vue
import mixin from 'mixin';
export default {
mixins: [ mixin ]
}
您可能会考虑的另一件事是使用组件扩展设计模式,即创建一个基础组件,然后在子组件中继承它。它有点复杂,但如果您有许多组件共享许多选项并且可能也继承了模板,则可以保持代码干燥。
如果你有兴趣,我已经写过on my blog。