深入了解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 相关文章推荐
javascript实现的基于金山词霸网络翻译的代码
Jan 15 Javascript
利用jquery的获取JS文件中的字符串内容
Feb 14 Javascript
jqgrid 表格数据导出实例
Nov 21 Javascript
node.js中的fs.lchownSync方法使用说明
Dec 16 Javascript
创建你的第一个AngularJS应用的方法
Jun 16 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
原生JS实现图片轮播切换效果
Dec 15 Javascript
jQuery实现CheckBox全选、全不选功能
Jan 11 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
es6函数之严格模式用法实例分析
Mar 17 Javascript
JS数组的常用方法整理
Mar 31 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
php树型类实例
2014/12/05 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
JavaScript定义变量和变量优先级问题探讨
2014/10/11 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
构建大型 Vue.js 项目的10条建议(小结)
2019/11/14 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
Windows下PyMongo下载及安装教程
2015/04/27 Python
Python探索之pLSA实现代码
2017/10/25 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
Python实现时间序列可视化的方法
2019/08/06 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
HTML5实现直播间评论滚动效果的代码
2020/05/27 HTML / CSS
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
巴西手表购物网站:eclock
2019/03/19 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
产品包装策划方案
2014/05/18 职场文书
村安全生产责任书
2014/08/25 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
扬州个园导游词
2015/02/06 职场文书
演讲比赛主持词
2015/06/29 职场文书
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android