应用开发平台集成表单设计器系列之1——技术预研与技术选型

背景

表单的可视化配置,是低代码开发平台的重要组成部分。平台已实现的低代码配置部分,可以配置生成前端vue页面,对于属性较少的实体,如系统基础数据的管理、配置数据的维护,采用标准化的模板模式来生成,配置简便,快速高效。

但不得不说,对于非标准化的复杂表单,如三五十个字段的单表,需要分组显示;主子关系表,需要多tab页展示……在这些场景下,表单的可视化配置仍然很有价值,相比原生开发,或者基于平台现有的模板式生成后手工修改,仍存在大幅提高开发效率的空间。

技术预研

市面上已经有一些可视化表单配置组件了,通常称之为表单设计器。使用vue,基于element ui/plus技术栈,免费开源,常见的的有以下几个:form-generator、FormMaking、form-create-designer,下面来具体说一说。

form-generator

首先来说下,form-generator,这是一款出现比较早的可视化表单设计器。
开源地址:https://gitee.com/mrhj/form-generator
开源协议:MIT
image.png
最后一次更新日期大概是2021年的3月份,已过去2年半
image.png
基本可以视为已经停止更新了。

技术栈:只支持vue2和Element UI
文档:无官网,无专门说明文档,仅有几篇教程
功能:“纯”前端设计器,跟后端难以集成与整合,例如,下拉列表中的数据不能从后端接口中拉取

预览地址:https://mrhj.gitee.io/form-generator/#/
image.png

FormMaking

其次说下,FormMaking。
开源地址:https://github.com/GavinZhulei/vue-form-making
开源协议:MIT
image.png
gitee只有vue2版本的库,vue3的版本只在官网上。
image.png

技术栈:多版本,既有vue2和Element UI的版本,也有vue3和Element Plus的版本
文档:有官网,文档看上去比较全面,https://form.making.link/docs/guide/introduction.html
功能:收费版功能全面,组件多,提供丰富api与后端集成,基础版功能受限

版本对比
image.png

放两张截图直观对比下开源免费版和商业收费版组件数量上的差异就好了,很明显。
开源免费版预览地址:https://form.making.link/basic-version/#/zh-CN/
image.png
商业授权版预览地址:https://form.making.link/sample/#/zh-CN/
image.png
一屏放不下,仅截取了部分。
而且,功能差异不仅仅在于组件的多少,而是API上也有限制,高级的API只能在商业授权版中使用。

form-create-designer

最后来说下,form-create-designer,这是最后发现的一款优秀的表单设计器,相比前面两款,比较特殊的一点是,还有个form-create的项目,实际是form-create-designer的最主要组成部分,因此下面数据把它也列上。
开源地址:https://gitee.com/xaboy/form-create-designer
开源协议:MIT
image.png
最后一次更新日期大概是一年前。

技术栈:多版本,既有vue2和Element UI的版本,也有vue3和Element Plus的版本,还支持其他UI库,如iView和Ant-design-vue
文档:有官网,文档看上去比较全面,http://www.form-create.com/v3/guide/
功能:比较全面,提供api与后端集成,组件可扩展

预览地址:http://form-create.com/v3/designer
image.png

技术选型

要进行技术选型,需要考虑多方面因素,最好的不一定是最适合的,最适合的才是最好的。
平台的主要技术栈是vue3+element plus,因此不支持该技术栈的form-generator首先就出局了,而且,一个无法跟后端集成的“纯”前端设计器,实用性也很有限。

FormMaking功能确实强大,但细分了版本,对于开源免费的基础版本,功能受限,实际影响不小。
反观form-create-designer,组件够用,提供api与后端集成,组件可扩展,缺点就是git指标比较低,使用者较少,遇到问题恐怕得自己摸索,很难百度到解决方案。

综上考虑,最终选择的form-create-designer。

开发平台资料

平台名称:一二三开发平台
简介: 企业级通用开发平台
设计资料:csdn专栏
开源地址:Gitee
开源协议:MIT
开源不易,欢迎收藏、点赞、评论。

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

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

相关文章

使用JMeter进行接口压力测试

1.我首先创建一个线程组 2.创建好之后如图所示 3. 进行配置 4. 然后添加一个https请求 5.创建好之后设置请求方法和对应参数 6.设置表格监听器 7.创建好之后如图所示 8.保存jmx文件后点击运行进行测试,结果反馈如下图

【数智化人物展】觉非科技CEO李东旻:数据闭环,智能驾驶数智时代发展的新引擎...

李东旻 本文由觉非科技CEO李东旻投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 数智化的主要作用是帮助决策。它的核心是大数据,以大数据为基础,匹配合适的AI技术,促使数…

leetcode刷题 - SQL - 简单

目录 1. 175组合两个表 左外连接 2. 181. 超过经理收入的员工 3. 182. 查找重复的电子邮箱 4. 196. 删除重复的电子邮箱 5. 197. 上升的温度 日期作差 6. 511. 游戏玩法分析 I 7. 577. 员工奖金 null条件运算 8. 584. 寻找用户推荐人 9. 586. 订单最多的客户 10. 595. 大的国家…

纯属摆烂1

你是否曾读过一本让你欲罢不能的计算机书籍?它可能为你打开了新的技术世界大门,或者是帮助你解决了棘手的编程难题。 你可以从以下几个维度进行创作,也可以自由发挥。 此为内容创作模板,在发布之前请将不必要的内容删除 方向一…

AD9371 官方例程裸机SW 和 HDL配置概述(二)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射 AD9371 官方例程 时钟间的关系与生成 : AD9371 官方…

【flink】RowData copy/clone方式

说明:一般用户常用的是GenericRowData。flink内部则多使用BinaryRowData。 方法一、循环解决(不推荐): 代码较为复杂需要根据RowType获取到内部fields的logicalType,再使用RowData.createFieldGetter方法创建fieldGetters。 public static …

为什么 conda 不能升级 python 到 3.12

为什么 conda 不能升级 python 到 3.12 2023-11-05 23:33:29 ChrisZZ 1. 目的 弄清楚为什么执行了如下升级命令后, python 版本还是 3.11? conda update conda conda update python2. 原因 因为 conda forge 没有完成 migration Migration is the …

第四届辽宁省大学生程序设计竞赛(正式赛)(12/13)

AC情况 赛中通过赛后通过暂未通过A√B√C√D○E○F√G√H√I○J√K—L√M√ 整体体验 easy:ABFHL mid:MJGC hard:IDKE 心得 感觉出了一堆典题,少数题还有些意思,E题确实神仙 题解 A. 欢迎来到辽宁省赛&#x…

shell之free命令

shell之free命令 free命令的参数在这里插入代码片使用例子 free命令的参数在这里插入代码片 1)-b, --bytes:以Byte为单位显示内存使用情况。 2)-k, --kilo:以KB为单位显示内存使用情况,这是默认值。 3)-m,…

图解系列--查漏补缺

1. L2转发,L3转发 网络传输中,每个节点会根据分组数据的地址信息,来判断该报文应该由哪个网卡发送出去。为此,各个地址会参考一个发出接口列表。在这一点上 MAC 寻 址与IP 寻址是一样的。只不过MAC 寻址中所参考的这张表叫做地址…

【双指针+简化去重操作】Leetcode 15 三数之和

【双指针简化操作】Leetcode 15 三数之和 解法1 解法1 新建一个嵌套列表&#xff1a;List<List<Integer>> result new List<>(); 初始化一个ArrayList并直接赋值&#xff1a;ArrayList<Integer> result new ArrayList<>(Arrays.asList(1, 2…

又来安利了,这个Itbuilder在线数据库设计工具用起来太顺手了

对于测试、开发、DBA、运维来说&#xff0c;数据库是再熟悉不过了。 我们都知道如今的数据是多么复杂和难以管理&#xff0c;但幸运的是有数据库设计工具可以帮助我们&#xff0c;可以在市场上找到很多的数据库设计工具&#xff0c;包括itbuilder。这些数据库设计工具可以帮助我…

【Python语言】集合的使用方法总结

目录 1、集合基本知识&#xff1a; 2、定义 2.1 定义集合变量 2.2 定义空集合 3、集合的常用操作 3.1 定义集合 3.2 添加新元素 3.3 移除元素 3.4 从集合中随机取出元素 3.5 清空集合 3.6 取两个集合的差集 3.7 消除两个集合的差集 3.8 两个集合合并 3.9 统计集合…

LeetCode144. Binary Tree Preorder Traversal

文章目录 一、题目二、题解 一、题目 Given the root of a binary tree, return the preorder traversal of its nodes’ values. Example 1: Input: root [1,null,2,3] Output: [1,2,3] Example 2: Input: root [] Output: [] Example 3: Input: root [1] Output: [1]…

Python模块ADB的, 已经 pyadb

Python模块ADB的使用指南_笔记大全_设计学院 (python100.com) pip install adb Python 调用ADB_python 调用adb命令_实相实相的博客-CSDN博客 Python ADB.shell_command Examples, pyadb.ADB.shell_command Python Examples - HotExamples Gitee 极速下载/PyADB - 码云 - 开…

绘制外包框

void GraphicsSvgItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { m_svgrenderer->render(painter,m_localRect); #if 0 // 绘制外包框 //QRectF boundingRect m_localRect.boundingRect(); // 获取外包框矩形 painter->…

【资源分享】各类免费好物API大全

免费API接口 AI绘画-Mid Journey&#xff1a;使用 Midjourney 目前全球领先的图片大模型&#xff0c;其能根据输入文字提供极其优秀的AI绘画作品。AI绘画-Stable Diffusion&#xff1a;通过AI 生成图片&#xff0c;包括图生文、文生图等。企业基本信息&#xff1a;通过公司名称…

npm i 报错:Cannot read properties of null (reading ‘refs‘)

问题: 旧项目要更改东西&#xff0c;重新部署上线的时候&#xff0c;发现页面显示有异常。当时在开发环境是没有问题的。后经排查是一个引入swiper的页面报错了&#xff0c;只要注释掉swiper插件&#xff0c;就没问题了&#xff0c;但这肯定是不行的。 原因&#xff1a; npm和…

二十三种设计模式全面解析-解密组合模式(Composite Pattern):构建统一而强大的对象结构

在软件开发中&#xff0c;面对复杂的对象结构和层次关系&#xff0c;我们常常需要一种能够统一处理单个对象和对象组合的设计模式。组合模式&#xff08;Composite Pattern&#xff09;提供了一种优雅而灵活的解决方案&#xff0c;它允许我们以统一的方式处理单个对象和对象组合…

【linux编程】Linux文件i/o编程的概念、方法与特性

Linux文件i/o编程是一种在Linux系统中对文件进行输入和输出操作的技术。文件i/o编程可以使用不同的方法,例如标准库函数、系统调用、内存映射或直接访问设备。在本文中,我将介绍Linux文件i/o编程的基本概念和常用的方法。 一、文件i/o编程的基本概念和特点 文件是一种存储在…