系统添加多版本支持

记录一下最近做的一个需求:

前段时间做的【监狱点名系统】改成公司打卡考勤用的系统,里面的"服刑人员"、"监区"、"入监/出监"……等相关配置需要做改动,所以考虑加一个全局的标志,来区分一下版本。

没写过这种需求,尝试着写了一下,如果有更好的方式希望各位大佬可以指点一下

一、思考

1.如何区分【监狱版】和【企业版】?

系统的版本在出版本的时候已经确定,相当于加在环境变量里面,不需要用户来选择,所以可以直接写在前端的配置里面。

二、实现

1.设置环境变量

在以下两个环境变量文件中设置相应的环境变量

1.确保Vite已经正确识别并加载了环境变量,无需额外配置,Vite默认会加载.env及其对应的生产环境变量文件

2.在你的Vue组件或其他需要访问环境变量的地方,可以通过import.meta.env来获取

2.添加不同版本所需的json文件

2.1 目录

这里我放到的modules下面

2.2 配置文件

这个文件可以是js也可以是json,里面的内容是根据各个版本所需要的配置来写的,字段名一样就是展示的信息不一样。

下面举个例子:

prison.json - 监狱版

{"dashboard": {"peopleNumber": "服刑人员数量","prisonInfo": "监室信息",},"personnel": {"personPosition": "所在监室","endImprisonedTimeFlag": false,}
}

enterprise.json - 企业版

{"dashboard": {"peopleNumber": "点名人员数量","prisonInfo": "科室信息",},"personnel": {"personPosition": "所在科室","endImprisonedTimeFlag": true,}
}

index.ts - 区分版本更改配置文件

import prison from './prison.json';
import enterprise from './enterprise.json';// 目前的版本
const VERSION_KEY = import.meta.env.VITE_APP_VERSION;// 判断版本,更改配置
let configVersion = {} as { [key: string]: any };
if (VERSION_KEY === 'enterprise') {configVersion = enterprise;
} else if (VERSION_KEY === 'prison') {configVersion = prison;
}export default configVersion;

3.全局注入

在main.ts中全局注入配置

在Vue 3中,全局属性的注入方式与Vue 2有所不同。Vue 3使用app.config.globalProperties的方式已被弃用,取而代之的是通过setup函数配合getCurrentInstance或者直接在provide/inject对来提供全局属性。

4.使用

在任何组件内通过 inject 来使用这个全局属性

const $v = inject('$vConfig') as { [key: string]: any };

三、结合i18n()

在实际项目中可能会需要再结合上中英文的翻译

i18n文件里需要加上不同版本对应的中英文,然后版本配置的json文件中的 value 需要写成 i18n 里面的messagekey

1. 不同版本对应的中英文

zh-CN.json - i18n的中文翻译文件

{"dashboard": {"prison": {"peopleNumber": "服刑人员数量","prisonInfo": "监室信息",},"enterprise": {"peopleNumber": "点名人员数量","prisonInfo": "科室信息",}}
}

en.json - i18n的英文翻译文件

  "dashboard": {"prison": {"peopleNumber": "Number of prisoners","prisonInfo": "Room information",},"enterprise": {"peopleNumber": "Number of personnel","prisonInfo": "Department Information",}},

2.更改版本配置的json文件

prison.json - 监狱版

{"dashboard": {"peopleNumber": "dashboard.prison.peopleNumber","prisonInfo": "dashboard.prison.prisonInfo",},
}

enterprise.json -企业版

{"dashboard": {"peopleNumber": "dashboard.enterprise.peopleNumber","prisonInfo": "dashboard.enterprise.prisonInfo",},
}

3.使用

对于i18n的使用 t() 的用法,这里不做说明了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/450749.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache POI与easyExcel:Excel文件导入导出的技术深度分析

在处理Excel文件时,Java开发者经常会面临多种选择,其中Apache POI和easyExcel是两个非常受欢迎的选择。这两个库都提供了强大的Excel文件处理功能,但在性能、内存使用、API设计以及扩展性方面有所不同。本文将深入分析Apache POI和easyExcel在…

算法学习——华为机考题库4(HJ26 - HJ30)

算法学习——华为机考题库4(HJ26 - HJ30) HJ26 字符串排序 描述 编写一个程序,将输入字符串中的字符按如下规则排序。 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出…

C#之linq和lamda表达式GroupBy分组拼接字符串

文章目录 C#之linq和lamda表达式GroupBy分组拼接字符串业务需求核心代码调试 C#之linq和lamda表达式GroupBy分组拼接字符串 业务需求 点击提示信息,如:“售后单【SH001】序列号【001,002,006】;售后单【SH002】序列号…

2024美赛数学建模A题思路分析 - 资源可用性和性别比例(2)

# 1 赛题 问题A:资源可用性和性别比例 虽然一些动物物种存在于通常的雄性或雌性性别之外,但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1:1,但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。…

【学习笔记】详解换根法(换根DP)

一.换根DP的概念 1.换根DP是什么? 换根DP,又叫二次扫描,是树形DP的一种。 2.换根DP能解决什么问题? 换根DP能解决不指定根结点,并且根节点的变化会对一些值产生影响的问题。例如子结点深度和、点权和等。如果要 暴力…

uptime-kuma拨测

uptime-kuma拨测 https://github.com/louislam/uptime-kumadocker run -d --restartalways -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1[rootvm ~]# git clone https://github.com/louislam/uptime-kuma.git

智慧商城项目(ing)

项目概述 1.创建项目 目标:基于VueCli自定义创建项目架子,将目录调整成符合企业规范的目录 删除多余的文件 修改路由配置 和App.vue 新增两个目录 api/utils ①api接口模块:发送ajax请求的接口模块 ②utils工具模块:自己封装的一些工具方法模块 2…

双非本科准备秋招(15.3)—— 力扣二叉树

今天学了二叉树结点表示法,建树代码如下。 public class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int val) {this.val val;}public TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left …

Unity引擎学习笔记之【角色按键器操作】

角色按键Character Controls 一、脚本操作 设置脚本 设置基本键盘操作 //水平轴float horizontal Input.GetAxis("Horizontal");//垂直轴float vertical Input.GetAxis("Vertical");//创建方向向量Vector3 dir new Vector3(horizontal,0,vertical);/…

[SWPUCTF 2021 新生赛]easyrce

经典的RCE题目看到这个eval可以想到使用系统命令执行 我们查看当前文件夹下的文件只有index.php 一般放在/目录下 我们查看 看到一个类似flag的文件 我们查看cat找到flag

Vulnhub靶机:hacksudo3

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:hacksudo3(10.0.2.45) 目标:获取靶机root权限和flag 靶机下载地址:https://www.vulnhub.com/entry/hac…

Linux下新建用户

新建用户 sudo adduser -m username添加密码 sudo passwd username设置权限 sudo vi /etc/sudoers在user privilege这一行,仿照root,另起一行,添加上 设置命令解释器 sudo vi /etc/passwd找到新建用户名,将sh改为bash vi中…