基于Vue的低代码可拔插自定义组件

背景说明

在低代码初期,各个厂商的前端低代码搭建框架基本集中在JQuery、Vue、React 等。但在低代码的实施阶段,对于前端的展示,都遇到了同一个挑战:部分场景下需要根据自身业务来定制表单组件(如表单组件UI和业务逻辑)。

市场调研

市场目前了解的方案主要有三种:

1.面向程序猿的模板化研发,系统提供初始工程源码和表单组件模板下载。程序猿在本地启动工程源码,按照对应路径放入表单组件后,即可进入编码。编码完成后,在系统进行上传即可。可降低程序猿上手难度,一定程度上保证系统源码的独立性,但同时也存在线上无法预览和调试难等问题。

2.提供自定义脚本 & 自定义样式的能力。自定义动作是针对系统组件提供了几种固定的触发事件,当触发组件值改变事件时,表单能执行对应的脚本逻辑。自定义样式,则是将样式代码参数转化为了配置,如自定义组件的边距、颜色等,满足客户基本UI要求,但无法实现用户高度定义UI的需求。

3.基于组件参数化配置,如:系统提供组件的标准JSON,业务配置者无需了解技术实现,只需了解JSON中参数的效果,通过组合不同的参数,调整组件的呈现效果。对于全新的自定义组件,则要求需要具备一定编程经验的程序猿。系统提供了参数+事件的拓展能力,让程序猿编写对应事件的执行逻辑代码。此方案可以减少开发工作量,提升效率,但对于复杂全新自定义组件,程序猿的研发体验相对较差。

调研分析

对于市场调研的三种方案而言,会存在这样一些问题:

1.参数配置化的方式,只能是对现有组件的能力增强,所以方向相对比较单一。在真实需求覆盖场景比较广的情况下,对于表单的交互灵活性和业务特殊性要求是比较高的。目前来看,无法实现真正的自定义组件UI和自定义业务逻辑。

2.不支持在线开发,对于模板化研发、自定义能力增强、参数化配置,均无法支持在线编码、同步预览、在线调试、即时发布等能力。对于程序猿,无疑是存在能力边界的开放限制,同时也是一定程序上限制了研发效率。

3.这几种方式的后续拓展,意味着需要有更多自定义能力的支持,这样对系统的向下兼容要求是相当高的,同时在这个过程中,对于系统的稳定性也会随之打个问号。

4.在这几种方式中,对于自定义组件的复用性和沉淀基本是为0的,没有构建起属于系统平台的生态,对于后续的复用和生态发展存在一定的局限性。

自研方案

对于自研方案,主要的组成部分有以下几个:

1.在建模平台中,搭建开发者中心和IDE代码编辑器(后续简写用IDE),用于编写自定义表单组件,提供了自定义表单组件的新增、在线IDE编码、组件预览、组件保存和发布、导入和导出(满足二开 / 复用的场景)等功能。

2.在表单建模中,表单设计器引入自定义表单组件,实现和普通表单组件同样的拖拉拽效果。

3.在运行端中,表单模块引入组件渲染引擎,用于自定义表单组件的渲染。

其中在IDE中,有以下功能:

1.数据设计:定义组件的数据结构,用在表单设计器中,将组件的数据模型和表单字段进行关系配置,实现前后端数据上的解耦,满足一组件可用于不同数据源的场景。

2.代码编码:不仅支持前端新技术框架Vue编码,也能复用现有Vue体系下的组件代码,还能支持ES6编写,解决浏览器兼容问题,提高研发效率,同时在编码过程中实现实时预览。编码保存和发布后,代码会传输到数据库中保存,并做到实时发布运行段,从而实现用户表单中整个UI和业务的高度自定义业务场景。

方案特性

针对与市场调研的三种方案,方案具备以下优点:

1.场景支持度更广。不仅支持简单业务组件,还提供了可自由编码高度复杂场景的能力。前者对于简单业务组件,可通过复用原有体系的组件去实现,后者对于UI和业务逻辑的纯定制,提供了很强的自由度。

2.编码的能力更强。当表单组件无法满足客户需求时,用户可通过开发者中心创建新的组件,在线coding后,进行组件的预览。确认业务无问题后,在表单建模中绑定对应表,即可点击发布,实时发布到运行环境。对于移动端,也能支持对应的组件编写和渲染。

3.具备沙箱能力的组件。在组件编码过程中,程序猿可将原本基于Vue的组件,通过一定改造后,直接发布到线上并进行使用。对于系统而言,只需要提供对应的组件沙箱渲染引擎即可,无需关心组件的自定义业务场景内容,不会对系统原有稳定性造成影响。

对自身而言,还有几个特性:

1.可复用的表单组件。通过支持组件的数据设计,打通了原有表单中前后端的数据绑定限制,实现了一个组件可复用绑定多数据源的情况。不同的应用在需求业务相同的情况下,只需绑定好对应的数据源,即可实现组件复用。

2.可二开的表单组件。通过开发者中心下,组件导入导出的功能,可满足一个组件跨租户下多次二开的需求,亦可实现跨租户下的多次复用,对于组件市场的丰富度随着业务丰富而丰富。

业务流程

在这里插入图片描述

1.管理后台创建自定义表单组件,基于Vue2风格进行组件编码
2.拖入自定义表单组件,并将组件数据结构和表数据源配置绑定表
3.编码数据+数据绑定序列化JSON存储Mysql
4.进入运行端对应表单页面
5.获取对应表单模型实例 + 自定义组件编码
6.将编码解析成vue compoment
7.基于babel-standalone适配ES6语法
8.组件渲染结束
9.编辑组件业务数据
10.产生运行字段业务数据,保存到数据库中

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

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

相关文章

虚拟机下CentOS7开启SSH连接

虚拟机下CentOS7开启SSH连接 自己在VMware中装了CentOS 6.3,然后主机(或者说xshell)与里面的虚拟机连不通,刚学习,一头雾水,查了半天,也不知道怎么弄。 在虚拟机(Vmware Workstatio…

前端小技巧之轮播图

文章目录 功能htmlcssjavaScript图片 设置了一点小难度,不理解的话,是不能套用的哦!!! (下方的圆圈与图片数量不统一,而且宽度是固定的) 下次写一些直接套用的,不整这些麻…

第二证券|A股突发!外资大动作!

A股走出独立行情! 今天,日本、韩国股市大幅下挫,但A股早盘并未遭到太多影响,走出了强势拉升的独立行情。创业板指涨超2%,沪指、深成指涨超1%,富时我国A50指数期货直线拉升,涨幅超越2%。 尽管盘…

Qt for Android 配置 gradle

配置 gradle 版本 在 Qt Android 编译时需要配置对应的 gradle 版本才能正确编译。 创建模板 创建 android 模板 修改配置文件 进入 Android 目录 android 模板目录 2. 修改 gradle.properties 文件 org.gradle.jvmargs-Xmx2048m 改为 org.gradle.jvmargs-Xmx1024m3. 修…

YesPMP众包平台 | 活动有礼,现金奖励点击领取!

YesPMP众包平台在线发福利啦,4月16日活动火热开启,现金奖励等你来领,最高可领千元,赶快参与将奖励收入囊中,一起来了解活动细节吧! 一、活动内容: 活动一:【项目征集令】活动&…

ubuntu 20.04 更新显卡驱动

1. 问题描述 $ watch -n 1 nvidia-smi画面不动 而且运行 pytorch 代码时出现问题: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 11070). Please update your GPU driver by downloading and installing a new…

tsconfig.json文件常用配置

最近在学ts,因为tsconfig的配置实在太多啦,所以写此文章用作记录,也作分享 作用? tsconfig.jsono是ts编译器的配置文件,ts编译器可以根据它的信息来对代码进行编译 初始化一个tsconfig文件 tsc -init配置参数解释 …

【Java框架】Mybatis教程(一)——环境搭建及基本CRUD操作

目录 持久化与ORMORM(Object Relational Mapping)ORM解决方案包含下面四个部分 MyBatis简介特点MyBatis框架优缺点优点缺点 搭建MyBatis开发环境步骤1. 创建Maven工程,导入MyBatis依赖的组件2. 编写MyBatis核心配置文件(mybatis-config.xml)示…

UE5不打包启用像素流 ubuntu22.04

首先查找引擎中像素流的位置: zkzk-ubuntu2023:/media/zk/Data/Linux_Unreal_Engine_5.3.2$ sudo find ./ -name get_ps_servers.sh [sudo] zk 的密码: ./Engine/Plugins/Media/PixelStreaming/Resources/WebServers/get_ps_servers.sh然后在指定路径中…

matlab使用教程(44)—绘制带标记的二维曲线图

在线图中添加标记是区分多个线条或突出显示特定数据点的有用方法。使用下面的一种方式添加标记: • 在线条设定输入参数(例如 plot(x,y,-s) )中包含标记符号。 • 将 Marker 属性指定为一个名称-值对组,例如 plot(x,y,Marker,s…

(六)C++自制植物大战僵尸游戏关卡数据讲解

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb 游戏关卡数据文件定义了游戏中每一个关卡的数据,包括游戏类型、关卡通关奖励的金币数量、僵尸出现的波数、每一波出现僵尸数量、每一波僵尸出现的类型等。根据不同的游戏类型,定义了不同的通…

Windows远程桌面连接虚拟机Linux

Windows远程桌面连接虚拟机Linux 需要先打开虚拟机的启用VNC连接使用VNC客户端进行连接 yum install -y tigervnc-server #安装tigervnc-server vncserver #启动一个vnc进程 #第一次启动会要求设置密码 #如果需要更改密码可以使用vncpasswd进行更改密码 vncserver -list #查看…