深入了解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 相关文章推荐
LazyLoad 延迟加载(按需加载)
May 31 Javascript
JS模拟面向对象全解(一、类型及传递)
Jul 13 Javascript
Extjs4 类的定义和扩展实例
Jun 28 Javascript
给文字加上着重号的JS代码
Nov 12 Javascript
jQuery事件用法实例汇总
Aug 29 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
Dec 12 Javascript
微信小程序商城项目之侧栏分类效果(1)
Apr 17 Javascript
微信小程序利用co处理异步流程的方法教程
May 20 Javascript
详解Vue项目中实现锚点定位
Apr 24 Javascript
对TypeScript库进行单元测试的方法
Jul 18 Javascript
vue数据更新UI不刷新显示的解决办法
Aug 06 Javascript
openLayer4实现动态改变标注图标
Aug 17 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
第八节--访问方式
2006/11/16 PHP
PHP n个不重复的随机数生成代码
2009/06/23 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
2016/12/06 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
Python translator使用实例
2008/09/06 Python
Python set集合类型操作总结
2014/11/07 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
浅谈pyqt5中信号与槽的认识
2019/02/17 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
禁毒宣传标语
2014/06/19 职场文书
2015年度企业工作总结
2015/05/21 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android
React自定义hook的方法
2022/06/25 Javascript