相信大家都用过less、sass等预编译器。它们中也有mixins,用法也很简单,例如Less中:

.box{
border:1px solid red;
padding:10px;
}
.mixin{
.box;
margin:10px;
}

编译之后就成了:

.box{
border:1px solid red;
padding:10px;
}
.mixin{
border:1px solid red;
padding:10px;
margin:10px;
}

这样就减少了写的代码量。也达到了公用相同样式的目的。

而 vue的mixins也是同样的道理。使用公用的内容,达到指定或者所有的实例都共享这些内容。

那么,vue中的mixins可以定义哪些内容呢?

官网的说明:混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

大致意思就是:

1) 混入对象的内容必须是一个对象。

2) 当使用混入时,相同的内容都会合并。

3) 数据对象如果有相同的,则以被混入的对象中data数据为准

后面会详细解释一下这几个意思。

HTML:

<div id="box">{{name}}:{{age}},{{sex}},{{print()}},{{say}} </div>

JS:

var mix={
el:"#box",
data:{
age:18,
sex:'female',
name:'八戒'
},
mounted:function(){
this.age++;
console.log(this.age)//11
},
computed:{
say:function(){
return '我在mix里面'
}
},
methods:{
print:function(){
return '这里是mix';
}
}
} new Vue({
// el:"#box",
mixins:[mix],
data:{
age:10
},
mounted:function(){
this.age+=2;
console.log(this.age)//13
this.sex='male';
},
computed:{
say:function(){
return '我在new Vue里面'
}
},
methods:{
print:function(){
return '这里是new Vue';
}
}
})

结果:

注意:

1) mixins 这个属性接收的是 一个数组 可以有多个mixins的内容,比如:mixins:[ mix1, mix2 , mix3],前提是定义了这些混入对象,不然就会报错。

2) 从上个栗子可以看出,只要是属于实例(或组件)的内容都是可以混入的,包括 el  。。。

3) 混入对象中如果有生命周期的 钩子 ,那么 混入对象  和 被混入对象的钩子都会被执行一遍,而且 混入对象的钩子将在  实例(或组件)自身钩子之前先执行。因为同名钩子函数将混合为一个数组,因此都将被调用。

4) 混入的方法methods,计算属性computed ,组件components,数据data等,只要值是为对象的,都是会被合并的。并且如果有相同的键值 , 则会以 被混入对象中的 键值 即 以实例(或对象)中的内容为准。

4) 比如在 data 中 age 这一项是相同的,这个时候是以 被混入 的对象中数据 优先 。

5) 所以 age 是 13 就很好理解了。 首先  被混入的对象的data数据优先,那么 age就是 ;然后 到达生命周期 mounted 的时候,混入的对象中的代码,执行一次,被混入的实例中的代码,再执行一次。 所以最终的结果就是。

全局混入

当然,mixins也有全局混入的方法,不过这样会让所有的实例都共享混入的内容。混入的规则还是一样的。

Vue.mixin({
//这里是要混入的内容
})

请谨慎使用全局混入的方法。毕竟只要使用了全局混入,所有实例都会共享  混入的内容  不管你是否   添加了  mixins 这个属性选项。

自定义选项合并策略

详细的可以查看官网 自定义选项合并策略

vue---mixins的用法的更多相关文章

  1. 十、vue mixins 的用法

    vue中mixins个人理解就是定义一些公用的比较常用的方法,类似我们vue中将一些常用的组件也会抽离出来做成一个公共组件一样,只不过vue中mixins是定义的是法或者计算属性,然后将其混入(合并) ...

  2. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  3. checkbox在vue中的用法小结

    关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样,之前对于vue插 ...

  4. Vue mixins(混入)

    建立一个公共组件,然后对该组件进行混入继承. 注意会走两个生命周期,谨慎使用 mixins混入,相当于生成new 组件:组件引用,相当与在父组件内开辟了一块单独的空间 mixins适用于,两个有非常相 ...

  5. checkbox在vue中的用法总结

    前言 关于checkbox多选框是再常见不过的了,几乎很多地方都会用到,这两天在使用vue框架时需要用到checkbox多选功能,实在着实让我头疼,vue和原生checkbox用法不太一样, 之前对于 ...

  6. _ 下划线 vue mixins 混入 变量前有下划线 变量不起作用

    _ 下划线 vue mixins 混入 变量前有下划线 变量不起作用

  7. VUE mixins(混入)

    mixins是在引入组件之后 将组件内部的内容如data等方法.method等属性与父组件相应内容进行合并 相当于在引入后 父组件的各种属性方法都被扩充了. 单纯组件引用:           父组件 ...

  8. Vue slot 插槽用法:自定义列表组件

    Vue 框架的插槽(slot)功能相对于常用的 v-for, v-if 等指令使用频率少得多,但在实现可复用的自定义组件时十分有用.例如,如果经常使用前端组件库的话,就会经常看到类似的用法: < ...

  9. cdn模式下vue的基本用法

    我们知道jq是简化了dom操作,而react和vue则是通过使用虚拟dom的方式,不需要频繁的更改ui界面,而是通过更改数据的方式来更新界面. 我们知道些jq插件时会在IFFE中传入jQuery,jQ ...

  10. Vue SSR: 基本用法 (二)

    上一篇讲解了ssr的原理,这篇主要讲基本用法: 1.安装 npm install vue vue-server-renderer --save 我们将在整个指南中使用 NPM,但你也可以使用 Yarn ...

随机推荐

  1. 20181112-PostgreSQL数据库dmp文件导入(记录一次数据导入)

    20181112-PostgreSQL数据库dmp文件导入 标注:dmp文件导入,场景:多个schema导入 1. 环境准备: postgres集群master节点上,postgres用户执行以下操作 ...

  2. python ----面向对象的三大特性---多态

    多态 多态 不同的子类对象调用相同的父类方法,产生不同的执行结果. 以继承和重写父类方法为前提

  3. 用kali执行arp攻击-----------使对方断网

    实现原理 其主要原理是局域网内的"攻击机"通过冒充同网络号下的"受害者主机"的物理地址(mac地址),通过欺骗网关,让网关原来应该发给"受害者主机&q ...

  4. C++中 #if 和 #ifdef 区别

    以#开头的都是预编译指令,就是在正式编译之前,编译器做一些预处理的工作#if 条件语句程序段1 //如果条件语句成立,那么就编译程序段1#endif程序段2//如果条件不语句成立,那么就编译程序段2# ...

  5. syso快捷键设置

    syso快捷键

  6. SQL NULL 值

    NULL 值是遗漏的未知数据. 默认地,表的列可以存放 NULL 值. 本章讲解 IS NULL 和 IS NOT NULL 操作符. SQL NULL 值 如果表中的某个列是可选的,那么我们可以在不 ...

  7. 服务端监控工具:Nmon使用方法

    在性能测试过程中,对服务端的各项资源使用情况进行监控是很重要的一环.这篇博客,介绍下服务端监控工具:nmon的使用方法... 一.认识nmon 1.简介 nmon是一种在AIX与各种Linux操作系统 ...

  8. SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现对三维模型和地形的剖切展示

    现在很多三维项目中,不仅仅要用到三维地形,正射影像和矢量数据,还会融合到各种三维模型,包括传统的3DMax手工建模,BIM,倾斜摄影自动建模,激光点云模型,三维地质体模型等等. 三维平台首先要做的是把 ...

  9. DSP到底是个什么鬼?看完你就懂了

    DSP 即数字信号处理技术, DSP 芯片即指能够实现数字信号处理技术的芯片. DSP芯片是一种快速强大的微处理器,独特之处在于它能即时处理资料. DSP 芯片的内部采用程序和数据分开的哈佛结构,具有 ...

  10. 为奋战在HIS创新路上的医院信息科赋能

    为奋战在HIS创新路上的医院信息科赋能 南京都昌信息科技有限公司 袁永福 2017-7 ◆◆前言 近日,上海瑞金医院向我司表示:“我院从2000年开始自主开发医院信息系统,走出了一条可持续的信息化发展 ...