Mixins一般有两种用途:
1. 在你已经写好了构造器后,需要增加方法或者临时的活动时使用的方法,这时用混入会减少源代码的污染。
2. 很多地方都会用到的公用方法,用混入的方法可以减少代码量,实现代码重用。
# Mixins的基本用法
我们现在有个数字点击递增的程序,假设已经完成了,这时我们希望每次数据变化时都能够在控制台打印出提示:“数据发生变化”.
~~~
num:{{num}}
add
var addLog = {
updated: function () {
console.log("数据发生变化,变化成---" + this.num + ".");
}
};
var app = new Vue({
el: '#app',
data: {
num: 1
},
methods: {
add: function () {
this.num++;
}
},
//混入
mixins: [addLog]
});
~~~
# mixins的调用顺序
从执行的先后顺序来说,都是混入的先执行,然后构造器里的再执行,需要注意的是,这并不是方法的覆盖,而是被执行了两边。
在上边的代码的构造器里我们也加入了updated的钩子函数:
~~~
updated:function(){
console.log("构造器里的updated方法。")
}
~~~
这时控制台输出的顺序是:
数据发生变化,变化成---2.
index.html:75 构造器里的updated方法。
PS:当混入方法和构造器的方法重名时,混入的方法无法展现,也就是不起作用
# 全局API混入方式
我们也可以定义全局的混入,这样在需要这段代码的地方直接引入js,就可以拥有这个功能了。我们来看一下全局混入的方法:
~~~
Vue.mixin({
updated:function(){
console.log('我是全局被混入的');
}
})
~~~
~~~
num:{{num}}
add
Vue.mixin({
updated: function () {
console.log('我是全局被混入的');
}
});
var app = new Vue({
el: '#app',
data: {
num: 1
},
methods: {
add: function () {
this.num++;
},
},
updated: function () {
console.log("构造器里的updated方法。")
},
});
~~~
PS:全局混入的执行顺序要前于混入和构造器里的方法。