产品AB测试设计

因为vue2项目升级到vue3经历分享1,vue2项目升级到vue3经历分享2,前端系统升级,界面操作也发生改变,为了将影响降到最低,是不能轻易让所有用户使用新系统的。原系统使用好好的,如果新界面用户不喜欢,或者说新界面测试不充分,导致出现一些bug,到时候一堆用户骂就得不偿失了。于是想着,是否能够AB测试的方式来做。因为之前也没做过,所以也在摸索中将经验经历总结下来,希望对大家也有帮助。
1、菜单权限分表
因为新界面的菜单与旧系统菜单路径不一样,采用的是动态加载,因此sys_permission需要做分表。
原系统的路径为/voucher
1
新系统加载方式

function loadComponent(component){let res;if (component){for (const path in modules) {const dir = path.split('views')[1].split('.vue')[0];if (dir.indexOf(component)>-1) {res = () => modules[path]();break;}}} else{res =() => import(`@/layout/other/empty.vue`)}return res;}

上面的动态加载,也就规定了界面访问路径,是根据views的路径是根据/voucher/addVoucher/index来的。如此一张sys_permission就是无法满足现状的。
1
因为有了shardingshpere的经验,这件事情就比较容易了。因为这个实质上就是一种策略模式。数据库中需要增加一个字段,用来分表。代码就不用怎么调整了,这种办法比通过java代码来做策略模式要好
搞两张表,定义分表字段,有了分表经验和shardingshpere,这个就显得很容易了。
1
权限规则与分录规则不一样,因此不再bindingTables之列,因为bindingTables是为了解决跨分片表之间的关联查询问题
1
2 后台接口增加字段
增加字段不可避免,因为分表必须指定字段以区分业务走那张表,因此接口也需要增加字段,看似这么做会产生很多更改,但是这种方式组需要改一次,因为只要分了表,那么分两张,跟分100张就没有多大区别,产品设计得扩展性大大提高。
如下图接口获取菜单中只需要增加一个版本字段即可,如果要分步上线,那给version一个默认值就可以了。
因为权限会根据version进行分表,故很简单,没什么需要赘述得了。
2

3 前端如何进行跳转
既然是新旧老系统,各系统得访问得界面有很大不同,不支持菜单不同,那么可以推论两者之间需要有两个访问路径。如果一个系统中,AB测试显示不同得菜单,那么相同的访问路径是可以做到的。但是如果是很大的改动,则这种方式从逻辑上推理就无法解决这个问题。
这样也就是说,新旧系统采用不同的访问路径,即需要想办法重定向。
待补充…

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

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

相关文章

继承知识及扩展(C++)

1. 继承是什么? 继承是面向对象编程的三大特征之一,也是代码复用的手段之一。之前我们在很多的地方尝试函数的复用,而继承是为了类的复用提供了很好的方式。 (1)继承的代码怎么写 在一个类后面使用 :继承方…

程序设计——前后端分离实现简单表白墙

文章目录 一、前端页面样式代码二、前后端衔接1. 后端创建 maven 项目2. 针对前后端交互的解释以及后端代码的实现针对 post 请求解释前后端衔接针对 Get 请求解释前后端衔接 3.后端与数据库的联系以及对数据的存取单独封装数据库连接代码解释后端存储 save 数据的代码解释后端…

森林消防泵:守护绿色生命线的无声战士/恒峰智慧科技

在广袤无垠的森林中,生命的绿色如同一块巨大的调色板,为世界增添了无尽的生机与活力。然而,这美丽的画卷也可能因一场突如其来的火灾而瞬间破碎。因此,有一群默默无闻的消防人员,他们配备的是一台台强大的森林消防泵&a…

MYSQL数据库专业术语及创建数据表详细讲解{sql语句创建数据库语句及条件子句解析,编码格式解析,创建数据表解析,表定义字段解析,主键约束解析}

MYSQL数据库中的专业术语 数据库(Database):存储数据的集合,是数据的逻辑容器。 表(Table):数据库中存储数据的结构,由行(记录)和列(字段&#x…

第VI章-Ⅰ Vue3生命周期探讨

第VI章-Ⅰ Vue3生命周期探讨 简介Vue3生命周期概览生命周期钩子在选项式 API 中的使用错误捕获钩子 onErrorCaptured 生命周期钩子在组合式 API 中的使用错误捕获钩子 onErrorCaptured 总结 简介 在 Vue 3 中,生命周期钩子定义了组件在其创建、挂载、更新和销毁等过…

设计模式学习笔记 - 项目实战三:设计实现一个支持自定义规则的灰度发布组件(实现)

概述 上两篇文章,我们讲解了灰度组件的需求和设计的思路。不管之前讲的限流、幂等框架,还是现在讲的灰度组件,功能性需求都不复杂,相反,非功能性需求是开发的重点。 本章,按照上篇文章的灰度组件的设计思…

网络基础「HTTPS」

✨个人主页: 北 海 🎉所属专栏: Linux学习之旅 🎃操作环境: CentOS 7.6 腾讯云远程服务器 文章目录 1.基本概念1.1.HTTP协议面临的问题1.2.加密与解密1.3.数字摘要1.4.数字签名 2.解决方案2.1.「对称式加密」2.2.「非对…

MySql#MySql数据库基础

目录 一、什么是数据库 二、主流数据库 三、基本使用 1.连接服务器 2.使用 1.查看你数据库 2.创建数据库 ​编辑 ​编辑 ​编辑​编辑 3.使用数据库 ​编辑 4.创建数据库表 5.表中插入数据 6.服务器,数据库,表之间的关系 四、MySQL架构…

【算法】深度优先搜索岛屿数量

1、题目描述 有一个由0和1组成的二维矩阵,其中1代表陆地,0代表水,岛屿由水平或垂直方向上相邻的陆地连接形成。 假设矩阵的四周均被水包围,请计算岛屿的数量。 输入:matrix [[1,1,0,0],[0,0,1,0],[0,0,0,0],[0,0,1,1],…

for...in 可以用const声明item

代码&#xff1a; function* foo() {yield 1;yield 2;yield 3;}const genr foo();for (const item of genr) {console.log(item);}for (const i 0; i < 5; i) {console.log("i", i);}在这两段代码中&#xff0c;尽管两者都包含 for 循环&#xff0c;但它们的用途…

如何在 Gin 框架中处理多个 websocket 连接?

在Gin框架中处理多个WebSocket连接&#xff0c;你可以使用gorilla/websocket包。以下是一步步的指南&#xff1a; 首先&#xff0c;在你的终端运行go get github.com/gorilla/websocket来安装gorilla/websocket包。 创建一个Connection结构体来保存WebSocket连接和发送通道。 …

Git在无法访问github的访问方法

Git无法下载github上的源代码 代理的情况 问题&#xff1a;Failed to connect to github.com port 443 after 21100 ms: Couldnt connect to server 提示我们需要为Git单独配置代理。 查看我们的代理端口  为git 设置全局代理 git config --global http.proxy 127.0.0.1:&l…

C++中的回溯搜索法(Backtracking)

回溯搜索法&#xff08;Backtracking&#xff09;是一种通过试错的方法来解决问题的策略。在C中&#xff0c;这种方法通常用于解决诸如组合问题、划分问题、排列问题等&#xff0c;尤其在涉及到约束满足问题&#xff08;CSP&#xff0c;Constraint Satisfaction Problem&#x…

在C++中二维数组初始化的几种不同方法

在 C 中初始化二维数组可以有几种不同的方法&#xff0c;这取决于你想要的数组类型和初始化数据的具体情况。以下是一些常用的初始化方法&#xff1a; 1. 静态初始化 如果你知道数组的大小和初始值&#xff0c;可以直接在声明时初始化。这种方法使用嵌套的大括号 {} 来逐行指…

Apache反代理Tomcat项目,分离应用服务器和WEB服务器

项目的原理是使用单独的机器做应用服务器&#xff0c;再用单独的机器做WEB服务器&#xff0c;从网络需要访问我们的应用的话&#xff0c;就会先经过我们的WEB服务器&#xff0c;再到达应用程序&#xff0c;这样子的好处是我们可以保护应用程序的机器位置&#xff0c;同时还可以…

LNMP一键安装包

LNMP一键安装包是什么? LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Alibaba/Amazon/Mint/Oracle/Rocky/Alma/Kali/UOS/银河麒麟/openEuler/Anolis OS Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQ…

代码随想录leetcode200题之链表

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题中链表部分的题目。 2 训练 题目1&#xff1a;203移除链表元素 C代码如下&#xff0c; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* Lis…

【学一点儿前端】Bad value with message: unexpected token `.`. 问题及解决方法

问题 今天从vue3的项目copy一段代码到vue2项目&#xff0c;编译后访问页面报错了 Bad value with message: unexpected token ..注意到错误字符‘.’&#xff0c;这个错误通常发生在处理 JavaScript 或者 HTML 中的动态表达式中&#xff0c;日常使用二分法不断缩小报错代码范…

JavaScript String indexOf() 方法

一、定义和用法&#xff1a; indexOf() 方法返回值在字符串中第一次出现的位置。 如果未找到该值&#xff0c;则 indexOf() 方法返回 -1。 indexOf() 方法区分大小写。 二、语法 string.indexOf(substring, start) 1、参数 substring必需。要搜索的字符串。start可选。开…

2024“天一永安杯“宁波第七届网络安全大赛极安云科战队部分WP

“天一永安杯”2024 宁波第七届网络安全大赛暨第九届大学生网络技术与信息安全大赛 大赛竞赛形式 一、线上初赛 参赛人员&#xff1a;各单位自行选拔3人&#xff08;设队长1名&#xff09;组成团队&#xff0c;不足3人不允许参赛。 竞赛时间&#xff1a;8&#xff1a;30-12&…