当前位置: 首页 > news >正文

配置可视化-基于form-render的无代码配置服务(一)

背景

有些业务场景需要产品或运营去配置JSON数据提供给开发去使用(后面有实际业务场景的说明),原有的业务流程,非开发人员(后面直接以产品指代)把数据交给开发,再由开发去更新JSON数据。对于产品来说,直接接触JSON数据并不友好,一是搞不懂JSON;二是容易出错,影响现网数据。

基于此要解决2个方面的问题:

  1. 如何让产品也能更友好地去配置各类数据?
  2. 如何尽可能减少数据错误?

表单也许是个可以接受的方案,有标题、有各类交互的UI组件…,比直接让产品直接在Monaco Editor手写JSON来的好一点;表单本身也支持数据校验,是否必填、最大值最小值、数据格式、正则匹配…

而且对于表单这类UI来说,无论是react、vue都有很多比较成熟的基于JSON Schema的表单UI库,比如,阿里开源的一站式中后台表单解决方案:form-render,上述需要的功能基本都有了,接入也方便。

优点

  1. 通过表单UI完成数据配置的交互,更容易被非开发人员接受。
  2. 配置JSON Schema的时候,开发可以根据各个字段规范编辑好校验逻辑,在配置数据的时候就能直接检查出错误(类似于typescript在编译时会执行静态类型的检查)。
  3. 交互约束,保护数据结构,避免误操作破坏数据结构,导致线上数据出现问题。有效保护数据安全,比如给产品提供个Checkbox去勾选需要的数据,总比让产品直接写一个数组要好得多。
  4. 自定义表单组件(如form-render的widget),开发可以自定义表单组件,功能型组件如:CDN图片上传裁剪组件、链接生成组件、数据预填充组件(指先填写部分字段,再拉从后台拉取其他相关的数据填充到表单内,如输入某个用户的uin,组件会自动拉取到这个uin相关的个人信息填到表单中)

功能

后台

提供cdn和请求接口两种拉取方式:

CDN

CDN的速度好一点,对服务器压力也没那么大,并且能够缓存下来,但在更新上会有延迟(需要刷新)。所以适用于相对固定的数据。

请求接口

请求接口在速度稍微慢一点,但好在数据足够实时,并且能够支持数据半配置化。数据半配置化是指,后台在接收到表单提交的数据后,对部分字段再做一层标准化的处理。

举个例子:

现在需要一份每周作者投票数排行榜的数据,产品填好或自动生成一些基本字段后(如作者们的头像链接、昵称、描述等用户个人信息),再给需要实时更新的字段(如票数)选择相应的标识选项,去告知后台这个字段需要后台另外拉取并填充到数据内才能返回给请求方。

需要注意的是:选择相应的标识选项这个能力也一般是通过widget开发的,但和数据预填充组件的区别在于,这个widget主要是为了告知后台去完成相关逻辑填充数据,而不是在前端直接拉取数据自动填在表单内(如上面提到的用户个人信息可以通过用户uin去拉)。

前端

数据列表页

入口页,区分测试环境和正式环境,可以通过域名或者其他方式区分。

原型图如下:

在这里插入图片描述

顶部栏:

  1. 表单id:自动生成,作为获取数据(包括用于描述表单UI的JSON Schema、表单填写的实际数据等)的唯一标识
  2. 创建人
  3. 备注
  4. 数据预览:展示数据,超过xx字数展示部分
  5. 状态:编辑中、发布、已删除
  6. 当前版本号
  7. 创建时间
  8. 类型:表单:在生成的表单内填写;默认:在Monaco Editor直接填JSON数据

操作栏:

  1. 编辑schema:跳转表单编辑页,如果类型不是表单,置灰不可用
  2. 编辑数据:表单页或者数据页,取决于创建时怎么选择
  3. 删除:使数据失效
  4. 历史版本:版本记录、版本回退、版本对比高亮、当前版本:以数据库数据为准,并且通过和CDN链接的数据做对比,判断CDN是否更新

表单编辑页

使用fr-generator,支持手动导入导出JSON Schema。编辑生成的schema要存储起来,用于下次编辑时能够直接显示表单UI,同时需要请求数据库数据,把数据回填到表单内。

表单页

左侧为表单,通过表单id拉取相应的Schema由form-render渲染UI;右侧实时展示当前表单的JSON数据。左侧表单数据变更时,右侧JSON数据实时更新并高亮差异。同时支持JSON数据导入导出。

数据页

基于Monaco Editor实现,适用于开发自己快速填写一些数据使用。

总结

本文主要是介绍背景和功能。

其实还有很多细节没有讲,比如,后台接口的数据结构是如何定义的,使其能够支持较为通用的数据(如JSON Schema也是用同一个接口去读写)读写需求;后台服务又是如何实现的,具体用的什么技术栈;平台的权限管理又是如何实现等细节。

同时很多问题也值得思考,比如,如何对正式环境和测试环境的数据做隔离;能否用表单hook的方式替代掉数据预填充组件,使其更简洁易扩展;如何实现不同表单之间的数据联动等相关问题。

后续还会有其他文章去聊一下这些细节和问题。

相关文章:

配置可视化-基于form-render的无代码配置服务(一)

背景 有些业务场景需要产品或运营去配置JSON数据提供给开发去使用(后面有实际业务场景的说明),原有的业务流程,非开发人员(后面直接以产品指代)把数据交给开发,再由开发去更新JSON数据。对于产…...

Java 代理模式详解

1、代理模式 代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 代理模式的主要作用是扩展目标对象…...

知识付费小程序怎么做_分享知识付费小程序的作用

在线知识付费产业的主要业务逻辑是基于用户的主动学习需求,为其提供以跨领域基础知识与技能为核心的在线知识服务,提升其达到求知目的的效率。公众号和小程序的迅速发展,又为知识付费提供了技术支持,从而促进了行业的进一步发展。…...

14- 决策树算法 (有监督学习) (算法)

决策树是属于有监督机器学习的一种决策树算法实操: from sklearn.tree import DecisionTreeClassifier # 决策树算法 model DecisionTreeClassifier(criterionentropy,max_depthd) model.fit(X_train,y_train)1、决策树概述 决策树是属于有监督机器学习的一种,起源…...

如何编译和运行C++程序?

C 和C语言类似,也要经过编译和链接后才能运行。在《C语言编译器》专题中我们讲到了 VS、Dev C、VC 6.0、Code::Blocks、C-Free、GCC、Xcode 等常见 IDE 或编译器,它们除了可以运行C语言程序,还可以运行 C 程序,步骤是一样的&#…...

Golang 给视频添加背景音乐 | Golang工具

目录 前言 环境依赖 代码 总结 前言 本文提供给视频添加背景音乐,一如既往的实用主义。 主要也是学习一下golang使用ffmpeg工具的方式。 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:windows ffmpeg安装部署_阿良的博客-CSDN博客 …...

让AI护理医疗:解决卫生系统的痛点

一、引言 1.对医疗领域中AI技术的介绍 随着人工智能的不断发展,它已经成为了各个领域中的重要组成部分。在医疗领域中,AI技术也逐渐发挥着越来越重要的作用。从诊断到治疗,从健康管理到研究,人工智能已经深刻地影响着医疗领域的…...

Windows 离线安装 MySQL 8

目录 1. 下载离线安装包 2. 上传解压 3 配置 my.ini 文件 4 设置系统环境变量 5 安装 MySQL 6 登录 MySQL 客户环境是内网环境,不能访问外网,只能离线安装 MySQL 了。 1. 下载离线安装包 MySQL 离线压缩包官网下载地址:MySQL :: Down…...

【前端攻城狮之vue基础】02路由+嵌套路由+路由query/params传参+路由props配置+replace属性+编程式路由导航+缓存路由组件

路由的基础知识1.路由简介2.路由基本使用3.嵌套路由4.传递路由的query传参# 5.传递路由的params参数6.路由的props传参配置7.路由router-link标签的replace属性8.编程式路由导航9.缓存路由组件1.路由简介 路由是一条条对应的key-value关系,key就是前端地址栏的路径…...

CHAPTER 1 Zabbix介绍及安装

Zabbix介绍及安装1.1 Zabbix监控1 为什么要监控1.1 网站可用性2 监控什么东西2.1 监控范畴3 怎么来监控3.1 远程管理服务器3.2 监控硬件3.3 查看cpu相关3.4 内存3.5 磁盘3.6 监控网络4 监控工具总览5 zabbix介绍5.1 zabbix的组成5.2 zabbix监控范畴1.2 安装zabbix1 环境检查2 安…...

认识V模型、W模型、H模型

软件测试与软件工程息息相关,软件测试是软件工程组成中不可或缺的一部分。 在软件工程、项目管理、质量管理得到规范化应用的企业,软件测试也会进行得比较顺利,软件测试发挥的价值也会更大。 要关注软件工程、质量管理以及配置管理与软件测试…...

excel ttest检测

1、excel函数含义 TTEST(array1,array2,tails,type) ▪ Array1: 第一组数据集 ▪ Array2: 第二组数据集 ▪ Tails: 用于定义所返回的分布的尾数: 1 代表单尾;2 代表双尾 ▪ Type: 用于定义 t-检验的类型: 1 代表成对检验;2 代表双样本等方差假设&am…...

PDFPrinting.Net操作进行细粒度控制

PDFPrinting.Net操作进行细粒度控制 PDFPrinting.Net能够容易且灵活地预测完美的打印结果以及用户文件的示例性显示。可以快速浏览.NET PDF打印中最关键的元素。如果用户需要获得更详细的概述,那么他可以查看快速入门手册,甚至是现有文档的详细概述参考。…...

SegPGD

在这项工作中,我们提出了一种有效和高效的分割攻击方法,称为SegPGD。此外,我们还提供了收敛性分析,表明在相同次数的攻击迭代下,所提出的SegPGD可以创建比PGD更有效的对抗示例。此外,我们建议应用我们的Seg…...

ESP-IDF + Vscode ESP32 开发环境搭建以及开发入门

ESP-IDF Vscode ESP32 开发环境搭建以及开发入门 文章目录ESP-IDF Vscode ESP32 开发环境搭建以及开发入门1. 前言2. 下载开发工具3. 配置工具4. 创建工程5. 解决vscode找不到头文件,波浪线警告6. 添加自己的组件6.1 组件说明6.2 添加项目组件6.3 添加扩展组件7. …...

SpringMvc的请求和响应

SpringMvc的数据响应 1.springmvc的数据相应方式 &#xff08;1&#xff09;页面跳转 直接返回字符串 通过ModelAndView对象返回 &#xff08;2&#xff09;回写数据 直接返回字符串 返回对象或集合 页面跳转 jsp页面 <% page contentType"text/html;charsetUTF-8&q…...

【Vue3】首页主体-面板组件封装

首页主体-面板组件封装 新鲜好物、人气推荐俩个模块的布局结构上非常类似&#xff0c;我们可以抽离出一个通用的面板组件来进行复用 目标&#xff1a;封装一个通用的面板组件 思路分析 图中标出的四个部分都是可能会发生变化的&#xff0c;需要我们定义为可配置主标题和副标题…...

部署 K8s 集群

1 .部署k8s的两种方式目前生产部署Kubernetes集群主要有两种方式&#xff1a;kubeadmKubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。二进制包从github下载发行版的二进制包&#xff0c;手动部署每个组件&#x…...

关于北京君正:带ANC的2K网络摄像头用户案例

如果远程办公是您的未来&#xff0c;或者您经常通过视频通话与远方的朋友和亲戚交谈&#xff0c;那么您可以考虑购买网络摄像头以显著改善您的沟通。Anker PowerConf C200是个不错的选择。 Anker PowerConf C200专为个人工作空间而设计&#xff0c;能够以每秒30帧的速度拍摄2K…...

ccc-Backpropagation-李宏毅(7)

文章目录NotationBackpropagationForward passBackward passSummaryNotation 神经网络求解最优化Loss function时参数非常多&#xff0c;反向传播使用链式求导的方式提升计算梯度向量时的效率&#xff0c;链式法则如下&#xff1a; Backpropagation 损失函数计算为所有样本…...

找出字符串中第一个匹配项的下标-力扣28-java

一、题目描述给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。示例 1&#xff1a;输入&#xff1a;hayst…...

SpringBoot 监听Redis key过期回调

SpringBoot 监听Redis key过期回调 场景 Spring boot实现监听Redis key失效事件可应对某些场景例如&#xff1a;处理订单过期自动取消、用户会员到期… 开启Redis键过期回调通知 Redis默认是没有开启键过期监听功能的&#xff0c;需要手动在配置文件中修改。Linux操作系统 修…...

蓝桥杯C/C++VIP试题每日一练之回形取数

💛作者主页:静Yu 🧡简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者 💛社区地址:前端知识交流社区 🧡博主的个人博客:静Yu的个人博客 🧡博主的个人笔记本:前端面试题 个人笔记本只记录前端领域的面试题目,项目总结,面试技…...

四控、三管、一协调

四控指的是进度控制&#xff0c;质量控制&#xff0c;成本控制&#xff0c;变更控制。三管指的是合同管理&#xff0c;安全管理&#xff0c;资料管理。一协调指的是协调甲方&#xff0c;总包及设备材料供应方的关系。信息系统工程监理是指依法设立且具备相应资质的信息系统工程…...

jdk19下载与安装教程(win10)超详细

一、下载安装步骤 1、官网下载还需要注册&#xff0c;可以点【我的网盘】目录下载&#xff0c;目录也有其它低版本的&#xff0c;如果有需要大家根据需要自行选择。 2、下载后直接点击安装程序&#xff0c;点击【运行】。这里我使用的是64位的。 3、点击【下一步】。 4、默认安…...

来来来,手摸手写一个hook

hello&#xff0c;这里是潇晨&#xff0c;今天就带着大家一起来手写一个迷你版的hooks&#xff0c;方便大家理解hook在源码中的运行机制&#xff0c;配有图解&#xff0c;保姆级的教程&#xff0c;只求同学一个小小的&#x1f44d;&#xff0c;&#x1f436;。 第一步&#xf…...

【C++】AVL树

目录 1 简介 2 实现 2.1 框架构建 2.2 插入操作 2.2.1 平衡因子的更新 2.2.2 平衡因子异常时树的调整 3 检验 1 简介 AVL树基于二叉搜索树之上&#xff0c;又对其提出了平衡的要求&#xff0c;即&#xff1a;当向二叉搜索树插入新节点后&#xff0c;保证每个节点的左右…...

Mybatis源码(2) - SqlSessionTemplate的介绍及创建过程

0. 前言1. Spring对SqlSessionTemplate的管理1.1. SqlSessionTemplate的创建&#xff1a;1.2. MapperProxy中sqlSession的来源&#xff1a;2. SqlSessionInterceptor中的getSqlSession0. 前言 众所周知&#x1f60f;:MyBatis通过SqlSessionFactory 创建SqlSession去调用Executo…...

女生做大数据有发展前景吗?

当前大数据发展前景非常不错&#xff0c;且大数据领域对于人才类型的需求比较多元化&#xff0c;女生学习大数据也会有比较多的工作机会。大数据是一个交叉学科涉及到的知识量比较大学习有一定的难度&#xff0c;女生比较适合大数据采集和大数据分析方向的工作岗位。 大数据采…...

Git实用指令记录

config 用例&#xff1a;对git最先要做的一个操作就是配置用户名和邮箱&#xff0c;否则无法commit查看所有可以config的条目&#xff0c;非常之多$ git config --list core.symlinksfalse core.autocrlftrue core.fscachetrue color.interactivetrue color.uiauto help.forma…...

浙江响应式网站建设公司/分析网站

西门子获首都机场18亿大单 早报记者 周玲 责任编辑 罗裕  2005-5-24 0:10:24 记者从西门子中国公司获悉&#xff0c;西门子日前从北京首都国际机场获得了一份价值约为18亿元的新订单。西门子将为北京机场提供一套用于新型T3航站楼的先进的行李处理系统。预期此项工程将在2…...

做网站优化的注意事项/淘宝优化

MySQL讲义第40讲——select 查询之函数&#xff08;3&#xff09;&#xff1a;数学函数 文章目录MySQL讲义第40讲——select 查询之函数&#xff08;3&#xff09;&#xff1a;数学函数一、数据准备二、MySQL 数学函数介绍1、ABS() 函数2、FORMAT() 函数3、ROUND() 函数4、TRUN…...

滨州市住房和城乡建设部网站/淘宝指数官网入口

为什么80%的码农都做不了架构师&#xff1f;>>> 6.19号&#xff0c;spring团队发布了期待已久的 Spring Cloud Finchley.RELEASE 版本。 期间Spring Boot Admin 也发布了 2.0.1 兼容它&#xff0c;我在升级pig 到Finchley.RELEASE的同时 发现很多有意思的变化整理发…...

目前网站开发 用java 还是php/品牌营销策略分析

博主曾经是一名文艺青年&#xff0c;不信请看博主以前写的文&#xff1a; 关于台灯 2011年11月5日桌上有一盏台灯&#xff0c;落满了灰尘。  所以你总是会看到细微的灰尘散落在光线里&#xff0c;若隐若现&#xff0c;在黑暗中静静飘忽&#xff0c;虚幻而又真实&#xff0c;有…...

做网站赚钱要多久/网络营销推广服务

京东方用了15年时间做到了全球液晶面板老大的位置&#xff0c;不过由于液晶面板价格的持续下跌让人担忧它的前景&#xff0c;但是在去年四季度华为发布的mate20 Pro采用其OLED面板后&#xff0c;似乎显示出它在代表面板行业发展方向的OLED面板市场已打下基础&#xff0c;而近期…...

在哪个网站做一照一码/优化教程网下载

【经典编程题】 已知有8组一一对应的数&#xff08;X&#xff0c;Y&#xff09;如下&#xff0c;构成了一个字典库&#xff1a; &#xff08;5&#xff0c;1&#xff09; &#xff08;6&#xff0c;2&#xff09; &#xff08;7&#xff0c;4&#xff09; &#xff08;8&#…...