前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初探Vue的Mixin混入

初探Vue的Mixin混入

作者头像
胡哥有话说
发布2019-07-25 15:51:07
1.5K0
发布2019-07-25 15:51:07
举报
文章被收录于专栏:胡哥有话说胡哥有话说

问候语

在停更了近一周之后(假期已完美结束),胡哥又开启了文章的每日更新,与大家一起分享、讨论大前端的技术原理与项目实践。抽丝剥茧,让技术方案可见可闻;归纳整理,让知识体系成长可依。欢迎更多的小伙伴关注、分享《胡哥有话说》公众号,让胡哥与你一起:流年笑掷,未来可期。

前言

今天胡哥要与大家分享的是Vue.js的混入(Mixin)(注意:此处不是乱入,偷笑.png),Vue的混入(Mixin)提供了一种分发Vue中可复用功能的能力,简单、方便、灵活。

混入(Mixin)特点

混入对象可以包含任意组件选项,可以定义Data、methods、Components、LifeCycle Hooks(生命周期函数)、Directives(指令)、路由钩子函数等。

项目实践

有时需要在项目的多个组件中复用一些用户操作提示的功能:操作成功、操作失败、数据加载Loading状态,我们就可以借助Vue的混入(Mixin)功能来实现。

当然实现相同的功能的方法有很多种:比如自己定义一个UI组件库、比如使用第三方库等等,混入(Mixin)是条条大路通罗马的其中一条路。

说一千,道一万,不如来段代码看一看。

@/utils/mixins.js

代码语言:javascript
复制
/**
 * 定义混合Mixin对象,公共功能复用
 */
let myMixin = {
  data () {
    return {
      visible: false
    }
  },
  methods: {
    // 展示Loading
    showLoading () {
      this.visible = true
    },
    // 隐藏Loading
    hideLoading () {
      this.visible = false
    }
  },
  created () {
    console.log('Mixin混入中的生命周期created')
  }
}
    
export default myMixin

xxx.vue 某Vue文件 --- 局部混入

代码语言:javascript
复制
<script>
import myMixin from '@/utils/mixins'

export default {
  name: 'xxx',
  // 允许混入多个对象
  mixins: [
    myMixin
  ],
  created () {
    // 调用myMixin的方法
    this.showLoading()
    // 输出myMixin的数据变量
    console.log(this.visible)
  }
}
</script>

混入(Mixin)执行规则 -- 选项合并

当组件和混入对象含有同名选项时,选项将以恰当的方式“合并”。

  1. Data数据,数据对象在内部进行递归合并,并在发生冲突时以组件数据优先;
  2. 钩子函数,createdmounted等同名钩子函数会合并成一个数组,都将被调用。混入对象钩子函数优先执行;
  3. 对象选项:components、````methodsdirectives```等对象,会被合并为同一对象。如果出现了相同键值对,则当前组件中的键具有优先级

慎用全局混入

如果使用了全局混入,那么将影响每一个新创建的Vue实例

main.js

代码语言:javascript
复制
import Vue from 'vue'
import myMixin from '@/utils/mixins'

/**
* 全局混入
* 每个实例中都可以调用混入的myMixin对象
*/
Vue.mixin(myMixin)

扩展

在Vue中同时是支持自定义合并策略的,可以向Vue.config.optionMergeStrategies中添加处理函数

代码语言:javascript
复制
Vue.config.optionMergeStrategies.myOption = function (toVal, fromVal) {
  // 返回合并后的值
}

后记

以上就是胡哥今天给大家分享的内容,喜欢的小伙伴记得收藏转发、点击右下角按钮在看,推荐给更多小伙伴呦,欢迎多多留言交流...

胡哥有话说,一个有技术,有情怀的胡哥!京东开放平台首席前端攻城狮。与你一起聊聊大前端,分享前端系统架构,框架实现原理,最新最高效的技术实践!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 胡哥有话说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问候语
  • 前言
  • 混入(Mixin)特点
  • 项目实践
  • 混入(Mixin)执行规则 -- 选项合并
  • 慎用全局混入
  • 扩展
  • 后记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档