混入(mixin)

混入提供了一种非常灵活的方式,来分发vue组件中的可复用功能。一个混入对象可以包含任意组件选项,当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。
请谨慎使用全局混入,因为它会影响每个单独创建的 Vue 实例 (包括第三方组件)。大多数情况下,只应当应用于自定义选项,就像上面示例一样。推荐将其作为插件发布,以避免重复应用混入。

  1. 钩子函数合并
    同名钩子将混合为一个数组,因此都将被调用。混入对象的钩子函数在组件自身钩子函数之前调用。
  2. 数据对象合并
    数据对象在内部会进行递归合并,在发生冲突时以组件数据优先。
  3. 普通方法合并
    当混合值为对象的选项时,例如methods、components、directive,将被混合为同一个对象,两个对象键名冲突时,取组件对象的键值对。

插件

插件通常用来为vue添加全局功能。

  1. 使用插件
    通过全局方法Vue.use()使用插件,它需要在调用new Vue()启动应用之前完成:

    // 调用 `MyPlugin.install(Vue)`
    Vue.use(MyPlugin)new Vue({// ...组件选项
    })
    
  2. 开发插件
    Vue.js的插件应该暴露一个install方法,这个方法的第一个参数是Vue构造器,第二个参数是一个可选的选项对象

数据字典的引入

整体结构:

  1. 数据字典来源
    在resource.js中,导出数据:

    const baseDict = {dataStatus:{0:'待触发',1:'执行中',2:'已完成'},taskStatus:{0: '审核中',1: '已发布',2: '未通过',}
    }export default {...baseDict
    }
    
  2. dict类处理
    dict.js中,创建类Dict

    import resource from './resource'export default class Dict {constructor(dict){this.dict = dict}init(dicts,Vue){if(dicts && dicts instanceof Array){dicts.forEach(item => {Vue.set(this.dict,item,resource[item])})}}
    }
    
  3. 创建插件,使用mixin
    在index.js中,导出插件

    import Dict from './dict'let dictPlugin = {}
    dictPlugin.install = function(Vue) {Vue.mixin({data(){return{dict:{}}},created(){new Dict(this.dict).init(this.$options.dicts,Vue)}})
    }
    export default dictPlugin
    
  4. 引入插件
    main.js中,使用插件:

    import dictPlugin from './components/Dict'
    Vue.use(dictPlugin)
    
  5. 组件中使用

vue 插件方式引入混入相关推荐

  1. 开发Vue插件四种方式

    在日常开发中,可能只需要一两个插件就可以完成对系统开发需要.如果引入整个组件库,最后打包项目体积比较大.例如element-ui中的message提示组件等.下面会在vuejs官网提供的插件建议,根据 ...

  2. html引用单文件组件,vue之单文件组件 纯网页方式引入

    上一节的vue组件开发是把组件内容统一放到了一个js文件里面 里面写上模板字符串(引用组件) 这种方式还需要拼接转义 写法非常丑陋 vue贴心的帮我们封装了单文件组件 可以不用再模板里面拼接字符串 下 ...

  3. vue-cli cdn方式引入Vue模块

    文章目录 vue-cli cdn 方式引入 Vue 模块 前言 选择 Vue 的 cdn 如何引入 cdn ? 一手插入 一手准备 小结 + 打包测试 快速配置篇 FAQ 是否需要删除 import ...

  4. Vue引入第三方JavaScript库和如何创建自己的Vue插件

    一 第三方JavaScript库 前言 .vue文件 中不解析 script标签引入js文件,只能用 import 引入 有两种用法: 1.import a from '-/a' 2.import ' ...

  5. vue项目,引入插件element ui 样式不生效

    用vue ui 命令 引入插件 element ui 样式不生效 步骤一:执行如下命令,安装babel-plugin-component npm install babel-plugin-compon ...

  6. Vue笔记——Vue组件中引入jQuery

    Vue笔记--Vue组件中引入jQuery 如果想在普通的HTML页面引入jQuer库的话,直接使用<script src="jQuery.js"></scrip ...

  7. 什么是Mixin?带你了解Vue中的Mixin混入

    什么是Mixin?本篇文章带大家了解一下Vue中的Mixin混入,介绍Mixin和Vuex的区别,Mixin的使用方法,希望对大家有所帮助! Vue框架现在基本上已经占据了前端的半壁江山,Vue的数据 ...

  8. vue中动态引入图片为什么要是require, 你不知道的那些事

    相信用过vue的小伙伴,肯定被面试官问过这样一个问题:在vue中动态的引入图片为什么要使用require 有些小伙伴,可能会轻蔑一笑:呵,就这,因为动态添加src被当做静态资源处理了,没有进行编译,所 ...

  9. npm file方式引入公共包遇到的几个坑

    背景 在<前端多个vue项目公共组件的三种方法(推荐npm file引入)>这一篇里讲了npm通过file方式引入公共包的方法,但在实际运用中,会遇到不少坑,这里就讲述笔者遇到的2个问题并 ...

最新文章

  1. 2013-3-10日记
  2. Python学习【第6篇】:Python之文件操作
  3. 【职场】为什么要 “打工人” ?
  4. spring + maven项目 互相依赖的小坑
  5. python制作饼状图
  6. java.lang.Error: Unresolved compilation problem: 解决方案
  7. (day 23 - 中位数 投票法 )剑指 Offer 39. 数组中出现次数超过一半的数字
  8. /sbin/mount.vboxsf: mounting failed with the error: Protocol error
  9. php7 magento速度优化,7个更快的加载速度的Magento优化快速提示
  10. HFSS喇叭天线仿真
  11. 阿里云主机(ECS)入门(图文说明)详细了解
  12. Java 并发编程(一):简介
  13. 从小白踏上程序员之路
  14. 中科院计算机网络信息中心是一种怎样的存在?
  15. AppleCare 扫盲帖,三年苹果狗告诉你 AppleCare 到底值不值得买?
  16. 虚拟机WindowServer2003共享文件夹
  17. python音频降噪处理_Python | 简单的扩音,音频去噪,静音剪切
  18. UVC webcam添加H264 NV12等格式支持
  19. ffmpeg webm 提取_使用 FFmpeg 对 webp转png , webm转mp4或者gif等进行操作
  20. java生成报文_生成xml报文方法并输出

热门文章

  1. 洛谷-2324-骑士精神
  2. 3540. 二叉搜索树(北京邮电大学考研机试题)
  3. 北邮计算机考研分数线2021,北京邮电大学考研分数线_2021考研国家分数线什么时候出来...
  4. 华东师范大学心理学考研经验
  5. 交换机路由器的一些基本命令
  6. 洛谷P1402 酒店之王--网络流最大流拆点
  7. C++实现坦克大战(新手思路)
  8. 设计模式之略见一斑(命令模式Command)
  9. 负数在计算机中的存储——补码
  10. php的ip探针,ip签名探针