深入了解Vue.js 混入(mixins)


Posted in Javascript onJuly 23, 2020

混入 (mixins)定义了一部分可复用的方法或者计算属性。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

来看一个简单的实例:

var vm = new Vue({
  el: '#databinding',
  data: {
  },
  methods : {
  },
});
// 定义一个混入对象
var myMixin = {
  created: function () {
    this.startmixin()
  },
  methods: {
    startmixin: function () {
      document.write("欢迎来到混入实例");
    }
  }
};
var Component = Vue.extend({
  mixins: [myMixin]
})
var component = new Component();

选项合并

当组件和混入对象含有同名选项时,这些选项将以恰当的方式混合。

比如,数据对象在内部会进行浅合并 (一层属性深度),在和组件的数据发生冲突时以组件数据优先。

以下实例中,Vue 实例与混入对象包含了相同的方法。从输出结果可以看出两个选项合并了。

var mixin = {
  created: function () {
    document.write('混入调用' + '<br>')
  }
}
new Vue({
  mixins: [mixin],
    created: function () {
    document.write('组件调用' + '<br>')
  }
});

输出结果为:

混入调用
组件调用

如果 methods 选项中有相同的函数名,则 Vue 实例优先级会较高。如下实例,Vue 实例与混入对象的 methods 选项都包含了相同的函数:

var mixin = {
  methods: {
    hellworld: function () {
      document.write('HelloWorld 方法' + '<br>');
    },
    samemethod: function () {
      document.write('Mixin:相同方法名' + '<br>');
    }
  }
};
var vm = new Vue({
  mixins: [mixin],
  methods: {
    start: function () {
      document.write('start 方法' + '<br>');
    },
    samemethod: function () {
      document.write('Main:相同方法名' + '<br>');
    }
  }
});
vm.hellworld();
vm.start();
vm.samemethod();

输出结果为:

HelloWorld 方法
start 方法
Main:相同方法名

以上实例,我们调用了以下三个方法:

vm.hellworld();
vm.start();
vm.samemethod();

从输出结果 methods 选项中如果碰到相同的函数名则 Vue 实例有更高的优先级会执行输出。

全局混入

也可以全局注册混入对象。注意使用! 一旦使用全局混入对象,将会影响到 所有 之后创建的 Vue 实例。使用恰当时,可以为自定义对象注入处理逻辑。

// 为自定义的选项 'myOption' 注入一个处理器。
Vue.mixin({
 created: function () {
  var myOption = this.$options.myOption
  if (myOption) {
   console.log(myOption)
  }
 }
})
 
new Vue({
 myOption: 'hello!'
})
// => "hello!"

谨慎使用全局混入对象,因为会影响到每个单独创建的 Vue 实例 (包括第三方模板)。

以上就是深入了解Vue.js 混入的详细内容,更多关于Vue.js 混入的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
jquery插件珍藏(图片局部放大/信息提示框)
Jan 08 Javascript
30分钟就入门的正则表达式基础教程
Feb 25 Javascript
js倒计时小程序
Nov 05 Javascript
jQuery获取当前对象标签名称的方法
Feb 07 Javascript
详解Jquery的事件操作和文档操作
Dec 19 Javascript
微信小程序 解决swiper不显示图片的方法
Jan 04 Javascript
babel基本使用详解
Feb 17 Javascript
基于Vue实例生命周期(全面解析)
Aug 16 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
vue+django实现一对一聊天功能的实例代码
Jul 17 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 Javascript
JS字符串补全方法padStart()和padEnd()
May 27 Javascript
JS实现简单移动端鼠标拖拽
Jul 23 #Javascript
JS使用Chrome浏览器实现调试线上代码
Jul 23 #Javascript
JS实现鼠标按下拖拽效果
Jul 23 #Javascript
javascript利用canvas实现鼠标拖拽功能
Jul 23 #Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 #Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
Jul 23 #Javascript
JS前后端实现身份证号验证代码解析
Jul 23 #Javascript
You might like
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
php探针不显示内存解决方法
2019/09/17 PHP
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
python实现字典嵌套列表取值
2019/12/16 Python
Python下利用BeautifulSoup解析HTML的实现
2020/01/17 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
国际书籍零售商:Wordery
2017/11/01 全球购物
公司业务员岗位职责
2014/03/18 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
学校食品安全责任书
2015/01/29 职场文书
邀请函的格式
2015/01/30 职场文书
孔庙导游词
2015/02/04 职场文书
寒假生活随笔
2015/08/15 职场文书
Python图像处理库PIL详细使用说明
2022/04/06 Python