深入了解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 相关文章推荐
清空上传控件input file的值
Jul 03 Javascript
js中格式化日期时间型数据函数代码
Nov 08 Javascript
jquery 插件学习(五)
Aug 06 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
Dec 16 Javascript
JS链式调用的实现方法
Mar 07 Javascript
jquery 页面滚动到底部自动加载插件集合
Jan 31 Javascript
JS遍历数组及打印数组实例分析
Jan 21 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
Jan 26 Javascript
Vue.js中数组变动的检测详解
Oct 12 Javascript
js提取中文拼音首字母的封装工具类
Mar 12 Javascript
Vue实现点击显示不同图片的效果
Aug 10 Javascript
vue-router 路由传参用法实例分析
Mar 06 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
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
PHP实现事件机制的方法
2015/07/10 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
PHP实现大数(浮点数)取余的方法
2017/02/18 PHP
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python对url格式解析的方法
2015/05/13 Python
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
python3获取url文件大小示例代码
2019/09/18 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
Python unittest框架操作实例解析
2020/04/13 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
市场安全管理制度
2014/01/26 职场文书
2014年元旦活动方案
2014/02/15 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
法院授权委托书范文
2014/08/02 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技