深入了解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 相关文章推荐
什么是DOM(Document Object Model)文档对象模型
Mar 05 Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 Javascript
node.js中的fs.chmodSync方法使用说明
Dec 18 Javascript
js+html5绘制图片到canvas的方法
Jun 05 Javascript
原生js与jQuery实现简单的tab切换特效对比
Jul 30 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
Aug 10 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
Oct 10 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
May 27 Javascript
关于JavaScript中高阶函数的魅力详解
Sep 07 Javascript
如何使用Jquery动态生成二级选项列表
Feb 06 jQuery
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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
js获取图片大小的函数代码
2011/09/20 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
jQuery Ajax实现跨域请求
2017/01/21 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
解决c++调用python中文乱码问题
2020/07/29 Python
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
2015年小学语文工作总结
2015/05/25 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书