深入了解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 相关文章推荐
JS的replace方法介绍
Oct 20 Javascript
js自定义鼠标右键的实现原理及源码
Jun 23 Javascript
JQuery select(下拉框)操作方法汇总
Apr 15 Javascript
jQuery实现移动端手机商城购物车功能
Sep 24 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
JavaScript伪数组用法实例分析
Dec 22 Javascript
axios全局注册,设置token,以及全局设置url请求网段的方法
Sep 25 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
微信小程序实现文件、图片上传功能
Aug 18 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
Sep 19 Javascript
vue解决使用$http获取数据时报错的问题
Oct 30 Javascript
小程序实现列表展开收起效果
Jul 29 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
PHP与Web页面交互操作实例分析
2020/06/02 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
Extjs grid添加一个图片状态或者按钮的方法
2014/04/03 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
介绍Python中的一些高级编程技巧
2015/04/02 Python
python递归全排列实现方法
2018/08/18 Python
详解Python:面向对象编程
2019/04/10 Python
Python批量启动多线程代码实例
2020/02/18 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
英国现代家具和装饰网站:PN Home
2018/08/16 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
前台文员岗位职责及工作流程
2013/11/19 职场文书
档案接收函范文
2014/01/10 职场文书
个人自我评价范文
2014/02/05 职场文书
面试必备的求职信
2014/05/25 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
公务员检讨书
2014/11/01 职场文书
汽车转让协议书
2015/01/29 职场文书
办公室日常管理制度
2015/08/04 职场文书
Nginx配置https的实现
2021/11/27 Servers
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python