Ruoyi字典源码学习

  • 入口:查看全局入口文件 main.jsDictData.install()是字典功能的入口位置。
function install() {
  Vue.use(DataDict, {//额外参数
    metas: {
      '*': {
        labelField: 'dictLabel',
        valueField: 'dictValue',
        request(dictMeta) {
          return getDicts(dictMeta.type).then(res => res.data)
        },
      },
    },
  })
}

install全局注册了一个插件 DataDict,同时传入了额外参数 {meta:xxx},目的是将DataDict插件对应的参数进行赋值。
* DataDict插件:因为该插件本身是个function,所以Vue.use会直接将function视为 install()方法执行。

export default function (Vue, options) {
    mergeOptions(options)
    Vue.mixin({...})
}

首先执行 mergeOptions(options),目的是将传入的额外参数与DictOptions合并。具体实现是通过递归调用 mergeRecursive(source,target),将DictOptions的属性覆盖或者添加。 其次注册全局混入 Vue.mixin ,给所有 Vue 实例添加了 data()created() 方法。

Vue.mixin({
    data(){
        const dict = new Dict()
        dict.owner = this
        return {dict}
    },
    created(){
    ....
    this.dict.init(this.$options.dicts).then(()=>{...})
    }

})

data (): 每个 Vue 页面创建一个 Dict。 created(): 调用Dict.init(dicts)方法,传入每个vue页面声明的dicts数组(例如 dicts['sys_normal_disable'])。(额外补充:init().then(….)里的方法个人认为是为了拓展性,因为我全局查找也没有看到任何地方用到。)

Original: https://www.cnblogs.com/allworldg/p/ruoyi-dict-learn.html
Author: allworldg
Title: Ruoyi字典源码学习

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/643668/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Sicily 3913. 阶乘之和

    一开始被它的数据吓到了,还以为很复杂,但想清楚之后,确实是比较简单的,你只需要算到 24! 就行了,大于 24 的时候答案永远是 940313,因为我们是对 100000取模,算到…

    技术杂谈 2023年6月1日
    087
  • 设计模式 18 中介者模式

    中介者模式(Mediator Pattern)属于 行为型模式 一提到中介,大家都非常熟悉,生活中最常见的就是房屋中介。 虽然中介要收取一定费用,但却能给房东和租客都提供大量遍历,…

    技术杂谈 2023年7月25日
    082
  • 项目管理中的关键路径法-时窗图解法cpm

    完成单个活动所需的时间称为活动时间,可以形象地以一个矩形窗格来表示,这个窗格称为 时间窗口,简称 时窗。 1.1 分类 单位时窗: 基本时窗,时窗的不可分割的最小单元, 活动时窗:…

    技术杂谈 2023年7月11日
    072
  • 整合SSM框架

    具体步骤 准备工作 创建一个maven项目改成web工程 WEB-INF下建一个jsp文件夹 在pox.xml先导入依赖和静态资源过滤 junit junit 4.12 mysql…

    技术杂谈 2023年7月11日
    084
  • docker学习:docker安装

    Centos7 安装docker 下载安装yum install docker-ce 启动dockersystemctl start docker 创建并编写镜像加速文件vim /…

    技术杂谈 2023年7月10日
    073
  • 线性表-顺序表

    线性表的顺序存&#…

    技术杂谈 2023年7月25日
    088
  • 设计模式-策略模式

    预先定义有着不同执行过程但 结果相同的 算法族,运行时指定所需算法。 算法族此处为一组有共同主题的有相同结果的不同算法的集合。 话不多说,看个优化案例。 优化案例 不使用策略模式的…

    技术杂谈 2023年7月11日
    065
  • 世界顶级畅销书500本

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月31日
    082
  • Go写文件的权限WriteFile(filename,data,0644)?

    本文来自博客园,作者:阿伟的博客,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/go-ioutil-writefile-perm.html 前…

    技术杂谈 2023年7月24日
    077
  • C# Draw multiple Lines

    I would make a Line class having start and end point of the line in struct Point and make …

    技术杂谈 2023年6月1日
    0108
  • VLC搭建RTSP服务器

    实时流协议 RTSP 是在实时传输协议的基础上工作的,主要实现对多媒体播放的控制。用户对多媒体信息的播放、暂停、前进和后退等功能就是通过对实时数据流的控制来实现的。 而这些播放控制…

    技术杂谈 2023年5月31日
    085
  • 二维数组及滚动数组

    二维数组及滚动数组总结 在二维数组 num[i][j]中,每个元素都是一个数组。有时候,二维数组中的某些元素在整个运算过程中都需要用到;但是有的时候我们只需要用到前一个或者两个数组…

    技术杂谈 2023年6月21日
    098
  • 浏览器内核入门

    chromium大学 chromium doc 现代浏览器内部揭秘 [译] 现代浏览器内部揭秘(第一部分) – 掘金 (juejin.cn) [译] 现代浏览器内部揭秘…

    技术杂谈 2023年5月31日
    082
  • activiti 工作流动态设置指定节点任务人、责任人、组的实现方式

    首先给大家看一下我的流程图: 流程文件leaveBill.bpmn /更新请假状态,启动流程实例,让启动的流程实例关联业务*/@Overridepublic void saveSt…

    技术杂谈 2023年5月31日
    091
  • 【LEETCODE】70、字符匹配1023 Camelcase Matching

    最近做leetcode总感觉自己是个智障,基本很少有题能自己独立做出来,都是百度。。。 不过终于还是做出了一题。。。而且速度效率还可以 哎,加油吧,尽量锤炼自己 package y…

    技术杂谈 2023年7月24日
    068
  • 哥德尔不完备定理

    自从牛顿用物理的直觉,闯进无穷领域里大胆计算,铸造出犀利无比的分析工具后,许多人凭借着直观想象和聪明,也涌进去推导出许多互相冲突的结论,数学家花了两百多年的时间,才厘清了分析领域里…

    技术杂谈 2023年5月31日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球