混合是一种灵活的分布式复用 Vue 组件的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项。当组件和混合对象含有同名选项时,这些选项将以恰当的方式混合。比如,同名钩子函数将混合为一个数组,因此都将被调用

var mixin = {
created: function () {
console.log('混合对象的钩子被调用')
}
}
new Vue({
mixins: [mixin],
created: function () {
console.log('组件钩子被调用')
}
})
// -> "混合对象的钩子被调用"
// -> "组件钩子被调用"

具体用法详见:https://cn.vuejs.org/v2/guide/mixins.html

这里注意的是:

1:mixin定义的是一个对象;

2:mixin定义的对象中包含的内容,可以通过再vue中的mixins引入进去;

3:名字相同的会合并,根据这一原理,可以在不同的地方定义vue中的参数,然后合并;

4:注意的是这里并不是vue的子组件形式,子组件定义的数据,是可以直接在html中调用的,但是这里widget定义的对象,是通过mixin引入vue中的;

人才库中例子:

<div class="header">
<div class="header-content">
<div class="header-title"><a href="$homeLink" title="京东人才库"></a></div>
<div class="fr">
<div class="home">
<a href="index.html"><span class="home-icon"></span>首页</a>
<a href="javascript:;" class="total-data" v-on:click="showAll()"><span class="data-icon"></span>全部数据</a>
</div>
<div class="header-user" v-cloak>
<span class="verti-line"></span>
<a class="avatar" href="javascript:;"><img :src="imgurl"></a>
<a class="user-name" href="javascript:;">{{userinfo.userName}}</a>
<a class="resign" href="/logout">退出</a>
</div>
</div>
</div>
</div>
<div class="gradient-line"></div>

widget的(注意没有使用子组件形式<script type="text/x-template" id="xxx"></script>定义),相应的js

define(function (require, exports, module) {
var public = require('/js/common').public;
// mixins
module.exports = {
data: function () {
return {
userinfo: {}
}
},
computed: {
imgurl: function () {
return this.userinfo.imgurl ? this.userinfo.imgurl : 'http://img/dd.png';
}
},
mounted: function () {
var userinfo = public.getLoginData();
this.userinfo = userinfo;
}
}
});

这里定义的对象的字段值data、computed、mounted均是和vue的构造参数一致,方便后面的名称一致得合并;

在vue中定义:

var header =require('/widget/header/header');
new Vue({
el: '#app',
mixins: [header],//这里引入,将引入的对象和vue中的相同参数合并
data:{},
...
})

Vue中的“混合”——mixins使用方法的更多相关文章

  1. vue中extend/component/mixins/extends的区别

    vue中extend/component/mixins/extends的区别 教你写一个vue toast弹窗组件 Vue.extend构造器的延伸

  2. Vue中的scoped及穿透方法

    何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组 ...

  3. Vue中使用webpack别名的方法

    在工作中,我们经常会写出这种代码: import MHeader from '../../components/m-header/m-header' @import "../../commo ...

  4. Vue中,过滤器的使用方法!

    Vue.js允许自定义过滤器,可被用于一些常见的文本格式化.过滤器可以用在两个地方:双花括号插值和v-bind表达式.过滤器应该被添加在JavaScript表达式的尾部,由“管道”符号指示:(借官方的 ...

  5. Vue中的scoped及穿透方法(修改第三方组件局部的样式)

    何为scoped? 在vue文件中的style标签上,有一个特殊的属性:scoped.当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,也就是说,该样式只能适用于当前组 ...

  6. vue中操作Dom节点的方法

    1.vue中ref操作dom节点 <template> <div id="app"> <div </div> <button @cl ...

  7. Vue中遍历数组的新方法

    1.foreach foreach循环对不能使用return来停止循环 search(keyword){ var newList = [] this.urls.forEach(item =>{ ...

  8. vue中组件的四种方法总结

    希望对大家有用 全局组件的第一种写法 html: <div id = "app"> <show></show></div> js: ...

  9. Vue中正确使用jQuery的方法

    题主Vue小白,入门demo时想在其中使用jQuery(当然可能是不推荐的做法哈,毕竟俩儿的风格不一样,但万一你就需要呢 _^ ^_),结果遇到问题,最终倒腾解决. 编译报错:$ is undefin ...

随机推荐

  1. 单细胞 RNA-seq 10X Genomics

    单细胞流程跑了不少,但依旧看不懂结果,是该好好补补了. 有些人可能会误会,觉得单细胞的RNA-seq数据很好分析,跟分析常规的RNA-seq应该没什么区别.今天的这篇文章2015年3月发表在Natur ...

  2. 使用 Python 的 Socket 模块构建一个 UDP 扫描工具

    译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来 ...

  3. golang martini 源码阅读笔记之inject

    martini是go语言写的一个超级轻量的web开源框架,具体源码可在github搜索找到.13年那会开始接触go语言时有稍微看过这个框架,由于之后没有继续使用go就慢慢忽略了,最近由于手头项目可能会 ...

  4. The Number Games CodeForces - 980E (树, 贪心)

    链接 大意: 给定$n$节点树, 求删除$k$个节点, 使得删除后还为树, 且剩余点$\sum{2^i}$尽量大 维护一个集合$S$, 每次尽量添加最大的点即可 这样的话需要支持求点到集合的最短距离, ...

  5. linux 查找

    linux下的查找命令有很多,常用的有which.whereis.locate.find.平时在网上搜索一些教程的时候,经常会有让使用这四条命令中的一条去查找一些东西,但是经常这次说用which,下次 ...

  6. python-day29--socket

    一 .客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 二. 三. 1.互联网协议就相当于计算机界的英语 2.数据传输的过程中包头一定要是固定的长度 四.socket层的位置 so ...

  7. vue封装组件的正确方式-封装类似elementui的组件

    最近读了下element的源码,仿照他封装了两种不同的组件. 第一种:通过组件来调用显示的 <template> <!--src/component/custom/main.vue- ...

  8. linux 检查补丁包是否安装 名称 版本 release号

    To determine whether the required packages are installed, enter commands similar to the following: # ...

  9. 最齐全的Android studio 快捷键(亲测可用)

    Action Mac OSX Win/Linux 注释代码(//) Cmd + / Ctrl + / 注释代码(/**/) Cmd + Option + / Ctrl + Alt + / 格式化代码 ...

  10. Mybatis学习总结--------Mybatis <where>标签 (九)

      <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WH ...