如何从零开发⼀个低代码平台,有哪些成熟技术组件可⽤
⽬前国内主流的低代码开发平台有:宜搭、云程、简道云、明道云、氚云、伙伴云、道⼀云、JEPaaS、华炎魔⽅、搭搭云、JeecgBoot 、RuoYi等。这些平台各有优劣势,定位也不同,⽤户可以根据⾃⼰需求选择。如果企业想⾃主可控,从零开发⼀个低代码平台,如何技术选型呢?
低代码平台⾄少包含表单建模、流程设计、报表、代码⽣成器、系统管理、前端UI等组件,我们没必要重新造轮⼦,市场上已经有⼤量的成熟组件,选择合适的组件进⾏集成和⼆次开发,即可⾃主开发⼀个低代码平台。以下是以java + vue为开发技术的选型参考。
⼀、流程引擎选型
市场上⽐较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要⽤过其中⼀个框架,基本上就会⽤其它三个。开发低代码平台、OA系统、BPM软件均需要流程可视化功能,⽽流程可视化核⼼是流程引擎和流程设计器,对于市场上如此多的开源流程引擎,哪个功能和性能好,该如何选型呢?
1、Osworkflow
2、JBPM
3、Activiti
4、flowable
5、Camunda
⼆、流程设计器选型
对于低代码平台中的流程可视化,流程设计器是重要的⽀撑⼯具,⽬前市场上⽐较主流的流程设计器有bpmn-js、mxGraph、Activiti-Modeler、flowable-modeler、easy-flow、bpmn2-modeler插件等。
1、bpmn-js
2、mxGraph
3、Activiti-Modeler
Activiti 开源版本中带了web版流程设计器,在Activiti-explorer项⽬中有Activiti-Modeler,优点是集成简单,开发⼯作量⼩,缺点是界⾯不美观,⽤户体验差。
4、flowable-modeler
flowable开源版本中带了web版流程设计器,展⽰风格和功能基本跟Activiti-Modeler⼀样,优点是集成简单,开发⼯作量⼩,缺点是界⾯不美观,⽤户体验差。
5、easy-flow
6、Eclipse插件bpmn2-modeler
三、表单设计器选型
1、form-generator
2、vue-form-making
3 、k-form-design
四、vue框架选型
1、ElementUI
2、Ant Design Vue
蚂蚁⾦服出品,Ant Design 作为⼀门设计语⾔⾯世,经历过多年的迭代和积累,它对 UI 的设计思想已经成为⼀套事实标准,受到众多前端开发者及企业的追捧和喜爱,也是 React 开发者⼿中的神兵利器。希望 ant-design-vue 能够让 Vue 开发者也享受到 Ant Design 的优秀设计。
ant-design-vue 是 Ant Design 的 Vue 实现,组件的风格与 Ant Design 保持同步,组件的 html 结构和 css 样式也保持⼀致,真正做到了样式 0 修改,组件 API 也尽量保持了⼀致。Ant Design Vue 致⼒于提供给程序员愉悦的开发体验。
3、Vue Antd Admin
4、vue-admin-beautiful
5、Avue.js
五、系统管理组件选型
1、若依RuoYi-Vue
2、jeecg-boot
3、OPSLI
六、可视化图表选型
相⽐于传统⼿⼯定制的图表与数据仪表盘,图表可视化制作平台的出现,可以打破抵消的定制开发, 数据分散的问题,通过数据采集、清洗、分析到直观实时的数据可视化展现,能够多⽅位、多⾓度、全景展现各项指标,实时监控,动态⼀⽬了然。
可视化图表库技术选型,⽬前笔者调研的已知主流可视化库有:
· echart ⼀个基于 JavaScript 的⽼牌开源可视化图表库
· D3.js ⼀个数据驱动的可视化库, 可以不需要其他任何框架独⽴运⾏在现代浏览器中,它结合强⼤的可视化组件来驱动 DOM 操作
· antv 包含⼀套完整的可视化组件体系
· Chart.js 基于 HTML5 的 简单易⽤的 JavaScript 图表库
· metrics-graphics 建⽴在D3之上的可视化库, 针对可视化和布置时间序列数据进⾏了优化
· C3.js 通过包装构造整个图表所需的代码,使⽣成基于D3的图表变得容易
我们使⽤以上任何⼀个库都可以实现我们的可视化⼤屏搭建的需求, 各位可以根据喜好来选择.
七、其它常⽤后端技术栈
Java EE 8+ (软件构建、运⾏需要)
Apache Maven 3.x (软件构建需要)
Redis 3.2+ (软件运⾏需要)
nginx 1.20 (Http服务,部署前端需要)
Mysql 5.7+ (软件运⾏需要)
Spring Boot 2.3.x (主框架)
Mybatis-plus 3.3.x (持久化)
Druid 1.1.x(数据库连接池)
Apache Shiro 1.7 (权限)
JWT 3.7.0 (登录验证加密token)
Quartz 2.3.x(定时任务)
Easypoi 4.2.x(Excel导⼊导出)
Swagger2(在线API)
Slf4j (⽇志接⼝)
WebSocket (即时通讯)
Freemarker 2.3.30 (模板引擎)
camunda 7.11 (流程引擎)
minio 4.x (分布式⽂件存储)
1 Maven 项⽬构建依赖管理
Maven 翻译为"专家"、“内⾏”,是 Apache 下的⼀个纯 Java 开发的开源项⽬。基于项⽬对象模型(缩写:POM)概念,Maven利⽤⼀个中央信息⽚断能管理⼀个项⽬的构建、报告和⽂档等步骤。
Maven 是⼀个项⽬管理⼯具,可以对 Java 项⽬进⾏构建、依赖管理。本系统采⽤Maven来管理项⽬,并且建⽴的是多模块项⽬,让每个模块独⽴,⾼内聚,低耦合.不同模块之间保持⾃⼰的完整性。可以互相不⼲扰.⽅便以后的维护开发。
2 Redis 缓存
Redis是⼀个开源的使⽤ANSI C语⾔编写、遵守BSD协议、⽀持⽹络、可基于内存亦可持久化的⽇志型、Key-Value数据库,并提供多种语⾔的API。
它的优点如下:速度快,完全基于内存,使⽤C语⾔实现,⽹络层使⽤epoll解决⾼并发问题,它的单线程模型避免了不必要的上下⽂切换及竞争条件。
3 Ngnix Http服务和反向代理服务
什么是Nginx?Nginx是⼀个⾼性能的HTTP和反向代理服务器,也是⼀个IMAP/POP3/SMTP这些邮件协议的代理服务器,⾼可靠性,⽀持⾼并发性,低系统资源消耗性。简单来说,当⼀台服务器的单位时间内的访问量越⼤时,服务器压⼒就越⼤,⼤到超过⾃⾝承受能⼒时,服务器就会崩溃。为了避免服务器崩溃,让⽤户有更好的体验,以可使⽤Ngnix负载均衡来分担服务器压⼒。
4 mysql数据库
MySQL是⼀个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流⾏的关系型数据库管理系统之⼀,在 WEB 应⽤⽅⾯,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应⽤软件之⼀。
MySQL是⼀种关系型数据库管理系统,关系数据库将数据保存在不同的表中,⽽不是将所有数据放在⼀个⼤仓库内,这样就增加了速度并提⾼了灵活性。
MySQL所使⽤的 SQL 语⾔是⽤于访问数据库的最常⽤标准化语⾔。MySQL 软件采⽤了双授权政策,分为社区版和商业版,由于其体积⼩、速度快、总体拥有成本低,尤其是开放源码这⼀特点,⼀般中⼩型⽹站的开发都选择 MySQL 作为⽹站数据库。
5 SpringBoot框架
SpringBoot是由Pivotal团队提供的全新框架,其设计⽬的是⽤来简化新Spring应⽤的初始搭建以及开发过程。该框架使⽤了特定的⽅式来进⾏配置,从⽽使开发⼈员不再需要定义样板化的配置。通过这种⽅式,Spring Boot致⼒于在蓬勃发展的快速应⽤开发领域(rapid application development)成为领导者。
SpringBoot的核⼼就是简化配置,快速开发,⾮常符合我们公司的开发理念。让开发⼈员只关⼼业务
的实现⽽⽆需担⼼开发时繁琐的配置问题,在搭配上代码⽣成器,即使不懂代码也能开发出⾃⼰想要的功能。 SpringBoot框架有很好的拓展性,可以将SpringBoot项⽬拆分为SpringCloud微服务。
6 Mybatis-Plus 数据持久化框架
Mybatis是当前最⽕热的java持久层框架之⼀,它不仅是⼀款优秀的持久层框架,还⽀持定制化 SQL、存储过程以及⾼级映射。Mybatis避免了⼏乎所有的JDBC代码和⼿动设置参数以及获取结果集。Mybatis可以使⽤简单的 XML或注解来配置和映射原⽣信息,将接⼝和Java 的POJOs(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录。
⽽Mybatis-Plus 在 Mybatis 的基础上进⾏扩展,只做增强不做改变,引⼊ Mybatis-Plus 不会对您现有的 Mybatis 构架产⽣任何影响,⽽且 MP ⽀持所有 Mybatis 原⽣的特性。
7 Druid数据库连接池
Druid是⼀款开源的JDBC连接池、监控组件。可以监控数据库访问性能,Druid内置提供了⼀个功能强⼤的StatFilter插件,能够详细统计SQL的执⾏性能,这对于线上分析数据库访问性能有帮助。
8 Shiro 权限控制
Apache Shiro是⼀个强⼤且易⽤的Java安全框架,执⾏⾝份验证、授权、密码和会话管理。使⽤Shiro的易于理解的API,您可以快速、轻松地获得任何应⽤程序,从最⼩的移动应⽤程序到最⼤的⽹络和企业应⽤程序。使⽤Shiro可以控制页⾯按钮权限、菜单访问权限、后台服务接⼝权限。在前后端分离架构中,可以和jwt配合使⽤。
9 JWT 登录token
Json web token (JWT), 是为了在⽹络应⽤环境间传递声明⽽执⾏的⼀种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适⽤于分布式站点的单点登录(SSO)场景。JWT的声明⼀般被⽤来在⾝份提供者和服务提供者间传递被认证的⽤户⾝份信息,以便于从资源服务器获取资源,也可以增加⼀些额外的其它业务逻辑所必须的声明信息,该token也可直接被⽤于认证,也可被加密。在前后端分离架构中,可以和shiro配合使⽤。
10 Quartz 定时任务
Quartz框架是⼀个全功能、开源的任务调度服务,可以集成⼏乎任何的java应⽤程序—从⼩的单⽚机系统到⼤型的电⼦商务系统。Quartz 可以执⾏上千上万的任务调度。云程平台集成了任务调度功能,开发了可视化界⾯,⽤简单的操作来实现⾃⼰所需要的任务调度。
11 EasyPoi office⽂档处理
云程平台office⽂件处理采⽤了EasyPoi 这个POI ⼯具类来做⽂件的快速导⼊导出,让⼀个没见接触过poi的⼈员 就可以⽅便的写出Excel 导出,Excel模板导出,Excel导⼊,Word模板导出,通过简单的注解和模板 语⾔(熟悉的表达式语法),完成以前复杂的写法。也⾮常匹配简单、快速开发的理念。
此外,使⽤OpenOffice来做⽂档的预览功能,OpenOffice是⼀个开源办公套件,它的⽂件处理可以实现office系列⽂档
ppt,pptx,xls,xlsx,doc, docx都能够在线预览。
12 Swagger2 在线API
Swagger2是⼀个规范和完整的框架,⽤于⽣成、描述、调⽤和可视化Restful风格的web服务。
现如今,前后端分离已经逐渐成为互联⽹项⽬⼀种标准的开发⽅式,前端与后端交给不同的⼈员开发,但是项⽬开发中的沟通成本也随之升⾼,这部分沟通成本主要在于前端开发⼈员与后端开发⼈员对WebAPI接⼝的沟通,Swagger2 就可以很好地解决,它可以动态⽣成Api接⼝⽂档,降低沟通成本,促进项⽬⾼效开发。可以使⽤ Swagger2 +knife4j-ui进⾏API发布和管理。
13 Slf4j ⽇志接⼝
Slf4j是⼀个⽇志接⼝,⾃⼰没有具体实现⽇志系统,只提供了⼀组标准的调⽤api,这样将调⽤和具体的⽇志实现分离,使⽤Slf4j后有利于根据⾃⼰实际的需求更换具体的⽇志系统。
⽐如,之前使⽤的具体的⽇志系统为log4j,想更换为logback时,只需要删除log4j相关的jar,然后加⼊logback相关的jar和⽇志配置⽂件即可,⽽不需要改动具体的⽇志输出⽅法,试想如果没有采⽤这种⽅式,当你的系统中⽇志输出有成千上万条时,你要更换⽇志系统将是多么庞⼤的⼀项⼯程。
如果你开发的是⼀个⾯向公众使⽤的组件或公共服务模块,那么⼀定要使⽤Slf4j的这种形式,这有利于别⼈在调⽤你的模块时保持和他系统中使⽤统⼀的⽇志输出。
14 WebSocket 即时通讯
云程平台即时通讯采⽤WebSocket协议,它是 HTML5 开始提供的⼀种在单个 TCP 连接上进⾏全双⼯通讯的协议。简单来说,使⽤WebSocket使得客户端和服务器之间的数据交换变得更加简单,并且能有效节约服务器资源和带宽。WebSocket也为本系统在web端、app端、⼩程序端、H5端都实现了消息实时互通,实时推送功能。
15 Freemarker模板引擎
FreeMarker 是⼀款模板引擎: 即⼀种基于模板和要改变的数据, 并⽤来⽣成输出⽂本(HTML⽹页,
电⼦邮件,配置⽂件,源代码等)的通⽤⼯具。 它不是⾯向最终⽤户的,⽽是⼀个Java类库,是⼀款程序员可以嵌⼊他们所开发产品的组件。模板编写为FreeMarker Template Language (FTL)。
低代码平台可以采⽤Freemarker模板引擎来进⾏代码⽣成器模板的开发,集成了前后端模板,⽀持全页⾯操作⽣成⾃⼰想要的功能,包括单表的增删改查,多表关联的开发,还有⼯作流程表单的开发以及移动端的界⾯功能⽣成。有效降低软件开发投⼊成本,使开发变得简单。
16 camunda流程引擎
17 minio 分布式⽂件存储
Minio是⼀个开源的对象存储服务组件,⾮常适合存储⼤量⾮结构后的数据,⽐如图⽚、视频、⽂档等。Minio兼容Amason的S3分布式对象存储项⽬,采⽤Golang实现,客户端⽀持Java,Python,Javacript, Golang语⾔。对于中⼩型企业,如果不选择存储上云,那么 Minio 是个不错的选择,⿇雀虽⼩,五脏俱全。当然 Minio 除了直接作为对象存储使⽤,还可以作为云上对象存储服务的⽹关层,⽆缝对接到Amazon S3、MicroSoft Azure。
⼋、其它常⽤前端技术栈
vue 2.6.x (vue主框架)
ant-design-vue 1.7.x (vue组件)
less 3.9.x (css管理⼯具)
Webpack 4.x (前端⼯程构建打包)
Node 8.9.x (前端⼯程开发运⾏环境)
Npm 3.x (前端⼯程包管理器)
Yarn (前端⼯程包管理器)
AntV (图表组件)
Vant 2.11.x(移动端框架)
Uni-app (⼩程序框架)
1 Vue框架
2 Ant Design Vue
3 less css管理⼯具
4 Webpack 前端构建⼯具
Webpack 是⼀个前端资源加载和打包⼯具。所谓的模块就是在平时的前端开发中,⽤到⼀些静态资源,如JavaScript、CSS、图⽚等⽂件,webpack就将这些静态资源⽂件称之为模块。 webpack⽀持AMD和CommonJS,以及其他的⼀些模块系统,并且兼容多种JS书写规范,可以处理模块间的依赖关系,所以具有更强⼤的JS模块化的功能,它能对静态资源进⾏统⼀的管理以及打包发布。
5 Node.js 前端开发运⾏环境
6 npm js包管理器
7 yarn js包管理器
Yarn就是⼀个类似于npm的包管理⼯具,它是由facebook推出并开源。
与npm相⽐,yarn 有着众多的优势,主要的优势在于:速度快、离线模式、版本控制。
npm⽤下来⽐较强的⼀个痛点就是:当包的依赖层次⽐较深时,版本控制不够精确。会出现相同packa
ge.json,但不同⼈的电脑上安装出不同版本的依赖包,出现类似我的电脑上可以运⾏,别的电脑上不⾏的bug很难查。可以使⽤npm-shrinkwrap来实现版本固化,版本信息会写⼊ npm-shrinkwrap.json⽂件中,但它毕竟不是npm的标准配置。
yarn天⽣就能实现版本固化。会⽣成⼀个类似npm-shrinkwrap.json的yarn.lock⽂件,⽽⽂件内会描述包⾃⾝的版本号,还会锁定所有它依赖的包的版本号,yarn.lock存储着每个包的确切依赖版本,能确保从本地开发到⽣产环境,所有机器上都有精确相同的依赖版本。
8 AntV 数据可视化组件
开发网站需要什么软件
9 uni-app ⼩程序开发框架
uni-app 是⼀个使⽤ Vue.js 开发所有前端应⽤的框架,开发者编写⼀套代码,可发布到iOS、Android、H5、以及各种⼩程序(/⽀付宝/百度/头条/QQ/钉钉/淘宝)、快应⽤等多个平台。
10 Vant h5开发框架
Vant 是赞前端团队维护的移动端组件库,提供了⼀整套 UI 基础组件和业务组件。轻量、可靠的移动端 Vue 组件库,采⽤ MIT 开源协议,⽬前github star 数9k+,是有赞的⼀套开源组件库。通过 Vant,可以快速搭建出风格统⼀的页⾯,提升开发效率。⽬前已有近 60+ 个组件,这些组件被⼴泛使⽤于有
赞的各个移动端业务中。缺点是不⽀持⼩程序。
九、总结

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。