深入了解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 相关文章推荐
执行iframe中的javascript方法
Oct 07 Javascript
Javascript常考语句107条收集
Mar 09 Javascript
最新28个很棒的jQuery 教程
May 28 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
Dec 04 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
javascript控制层显示或隐藏的方法
Jul 22 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
js插件dropload上拉下滑加载数据实例解析
Jul 27 Javascript
使用Node搭建reactSSR服务端渲染架构
Aug 30 Javascript
微信小程序实现滑动切换自定义页码的方法分析
Dec 29 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
Jul 19 Javascript
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
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教程 预定义变量
2009/10/23 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
js实现二级菜单渐隐显示
2015/11/03 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
Python 时间处理datetime实例
2008/09/06 Python
Python实现将xml导入至excel
2015/11/20 Python
Python在图片中添加文字的两种方法
2017/04/29 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
python如何压缩新文件到已有ZIP文件
2018/03/14 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
Pycharm更换python解释器的方法
2018/10/29 Python
Python OpenCV实现视频分帧
2019/06/01 Python
使用pandas读取文件的实现
2019/07/31 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
Keras Convolution1D与Convolution2D区别说明
2020/05/22 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
Django中ORM的基本使用教程
2020/12/22 Python
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
工程造价专业大专生求职信
2013/10/06 职场文书
企业党建工作总结2015
2015/05/26 职场文书
windows安装python超详细图文教程
2021/05/21 Python
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python