低代码用什么语言有哪些?


低代码是指低代码开发平台,低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法(参考可视编程语言),使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。
上边是百度上介绍的低代码。
这个我觉得这么直接跟你说,不一定理解的很透彻,现在我用低代码框架实践一下,你就很好理解了。
阿里大佬整理的 Spring Cloud Alibaba 微服务实战笔记,【大厂面试敲门砖】
在我刚开始工作接触的项目都还没做前后端分离,经常需要后端来维护页面,有时候觉得自己好像天生不适合干前端,你要是让我研究研究后端的技术,看个中间件源码啊,分析分析什么框架底层原理啊,这都问题不大,偶尔搞一下JS也可以。你要是让我写个css样式,那简直要命了,一点也提不起兴趣,不知道有没有跟我一样的。
今天要介绍的框架直接不用写页面了,话不多说,下边咱们直奔主题
Erupt一个通用后台管理框架,据说有 超低代码量、 零前端代码、零 CURD操作、无需建表,纯Java注解开发等特色,号称三分钟就可以搭建一个完整的后台管理系统。
额~ 听着好像还挺流批的,到底是不是有这么魔幻,咱们一起用起来感受下。
首先来搭建一下环境,目前Erupt支持Java版本1.8.0及以上、Spring Boot版本2.0及其以上。
搭建easy
pom.xml引入必要的jar包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--用户权限管理-->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-upms</artifactId>
<version>1.6.7</version>
</dependency>
<!--接口数据安全-->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-security</artifactId>
<version>1.6.7</version>
</dependency>
<!--后台WEB界面-->
<dependency>
<groupId>xyz.erupt</groupId>
<artifactId>erupt-web</artifactId>
<version>1.6.7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
application.yml 文件只要简单配置数据源就好,提前准备个数据库,说到数据库这里我说个小插曲。
我之前在Github 提交案例代码的时候(https://github.com/chengxy-nds/Springboot-Notebook ),由于没太注意没屏蔽敏感信息,导致云数据库账号泄露了,最近我发现已经有小伙伴在数据库上跑项目了,仔细看了看里边的数据结构,发现像是个毕设项目。
本身这个库就是我跑demo案例的一个测试库,为的就是让小伙伴能把更多时间放在研究案例的技术点上,减少搭建环境这种没技术含量的琐碎事。
发现归发现,这里我没改密码,也没删他们的库,如果你要用就继续用着,但玩归玩,闹归闹,你不能乱动不是你的数据!影响其他人学习就不好了。
spring:
datasource:
url: jdbc:mysql://47.93.6.5:3306/erupt2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
jpa:
show-sql: true
generate-ddl: true
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
database: mysql
profiles:
active: dev
mail:
username: xxxx@qq.com
password: xxxxxxx
host: smtp.qq.com
properties:
mail.smtp.ssl.auth: true
mail.smtp.ssl.enable: true
mail.smtp.ssl.required: true
server:
port: 8888
说了点题外话,我们继续搞起~
其实到这Erupt的环境就搭建完了,额~ ,这就完了?
咱们什么也没干,项目是个空壳子,一行代码也没写,好像连个表也没建啊!
别着急咱们先启动下项目,看到控制台打印出很多建表语句和插入语句,这是因为Erupt框架底层应用JPA持久化,预置创建了一些系统表和数据。
注意:Erupt预置表只会随项目第一次启动构建一次,如果想重新创建,需删除.Erupt文件(一般在项目的工作空间内),获取文件位置方式
System.getProperty("user.dir")
再看数据库里创建了16张系统表,其中e_upms_user表是用户表,默认只有一个管理员账号,用户名、密码都是erupt。
2121
(PS:这里送题主和大家一份计算机书籍资源包,基本上是我这些年学习和工作中看过的书籍,本身我是做后端的,像Java、数据结构、操作系统、JVM、SQL调优、面试题、职业规划看的会多花一些),点击下边链接直接获取:
紧接着我们访问http://127.0.0.1:8888/,看一下是个什么效果,竟然有个完整的登录页面。
用上边的用户名、密码直接登录,erupt已经预先实现了完整的权限控等功能,而到这我们几乎是没写过什么代码的,都是框架封装好了的,菜单类数据全部从数据库动态获取,一个基础的后台管理系统就搭建完了,有点哇塞。
有趣的页面
那么问题来了?想要自定义页面怎么办?
开篇我们就说过erupt是零前端代码,全部基于Java注解开发的,接下来用Java注解写个简单页面体验下。
erupt有两个核心注解@Erupt,@EruptField
@Erupt注解修饰类,代表定义一个页面
@EruptField注解修饰字段,代表页面上显示的字段名
@Power注解控制是否操作按钮,增、删、改、查、导入、导出等
@Search注解表示字段为搜索条件
@Table注解表示页面取数据对应的表,如果不设置,页面第一次初始化的时候,会根据类字段值自动创建一张和类名一致的表名。
“ 注解类型比较多,不一一列举了,更多的自己到官网瞅:https://www.erupt.xyz
下边我们定义一个Student类,加上@Erupt,@EruptField注解,这样页面和元素就算写完了,是不是有点颠覆认知。
/*
*
@Erupt注解修饰在类上,@EruptField注解修饰在字段上
*
其他注解均为Jpa注解
*/
@Getter
@Setter
@Erupt(name = "学生表",
power = @Power(importable = true, export = true)
)
@Entity
//@Table(name = "t_student")
public class Student extends BaseModel {
@EruptField(
views = @View(title = "学生姓名"),
edit = @Edit(title = "学生姓名", notNull = true, search = @Search(vague = true))
)
private String studentName;
@EruptField(
views = @View(title = "所属班级"),
edit = @Edit(title = "所属班级", notNull = true)
)
private String studentClass;
@EruptField(
views = @View(title = "学生年龄"),
edit = @Edit(title = "学生年龄", notNull = true)
)
private String studentAge;
@Lob
@EruptField(
views = @View(title = "学生性别"),
edit = @Edit(title = "学生性别", notNull = true)
)
private String studentSex;
@EruptField(
views = @View(title = "考核状态"),
edit = @Edit(title = "考核状态", notNull = true, boolType = @BoolType(trueText = "通过", falseText = "挂科"), search = @Search)
)
private Boolean status;
}
但此时新创建的页面不会显示出来,还需要我们手动做一个映射关系,在菜单维护中自定义个菜单,类型值一定要为新建的 类名 Student。
保存刷新后会看到我们的新页面出现了,而且页面的功能很完整,基础操作、查询、导入、导出功能都自动实现了。
页面新增一个学生信息,对应的Student表也多了条记录,而这个持久化的过程完全由框架来做。
尽管Erupt 框架对前后端代码做了深度封装,但它提供了丰富灵活的自定义接口,来满足我们的个性化需求。
比如我们在录入新学生信息时,希望屏蔽名字为张三的同学,可以对页面按钮功能做代理dataProxy,实现自定义的逻辑,对哪个按钮代理就实现对应方法即可,如beforeAdd、afterAdd是对新增按钮的代理。
@Getter
@Setter
@Erupt(name = "学生表",dataProxy = {StudentDataProxy.class},
power = @Power(importable = true, export = true)
)
@Entity
//@Table(name = "t_student")
public class Student extends BaseModel {
}
public class StudentDataProxy implements DataProxy<Student> {
@Override
public void beforeAdd(Student student) {
//后台字段校验
if ("张三".equals(student.getStudentName())) {
throw new EruptApiErrorTip("名称禁止为张三!");
}
}
@Override
public void afterAdd(Student student) {
}
@Override
public void afterUpdate(Student student) {
}
@Override
public void afterDelete(Student student) {
}
}
当我们在页面录入名字为张三的同学时,成功屏蔽。其他类似的功能还有很多,这里就不一一举例了,看文档看文档~
如果我们想要按传统的方式开发接口,不用担心会和Erupt的页面生成规则有冲突,丝毫不会受影响。而且Erupt内部集成了JPA,提供了现成的dao接口,只要调用对应API即可上手开发。
如果你不想手写Java代码也没关系,Erupt还提供了代码生成器,自定义Java类名和字段名,可以生成代码,直接copy就行了。
说到这我只介绍了Erupt一丢丢的基础特性,主要是想让小伙伴知道有这么个敏捷利器。
不仅如此它还支持丰富的数据类型,内置了像定时任务管理、多表联合查询、前后端分离部署、接口权限、操作记录、多数据源、邮件系统、黑白名单等等很多实用功能,都直接调用API就可以用。
说在后边
Erupt 框架的优点是显而易见的,快捷、高效、上手容易,对新手相当的友好,但在实际生产环境中我只是用它来做一些配置字典类的数据管理。
因为它的深度封装虽然让开发变的简单高效,可对于业务相对复杂、高度定制的系统来说,Erupt 框架显得力不从心,更关键的一点,它的社区并不算特别活跃,毕竟是个小众框架。
不过,技术从来都是服务于业务的,如果你的业务与Erupt的气质相匹配,别犹豫,用它!
阿里大佬整理的 Spring Cloud Alibaba 微服务实战笔记,【大厂面试敲门砖】
}

随便扯扯
可能大家谈到低代码想到更多的是低代码搭建页面的平台,内部不少也是此种,其实对于偏逻辑编排、服务 BaaS 能力的偏可视化方式其实也算低代码,旨在「通过少写代码,用更便捷的方式来实现原本需写代码的工作」。
说到低代码,喜欢的人特别喜欢,不喜欢的人很不喜欢,此外也有“假装”去喜欢的,也有喜欢得不明不白的,我现在对于低代码是有点儿喜欢的那种,不过只限于「在特定领域,实现需求的速度比熟练工程师写代码要快的场景」,这种场景下用起来真心会比较爽,可能也用得不爽的时候,但是这种不爽远小于他带来的效益减去原本敲代码的投入,也很值得将这类产品做到好用爱用。
其实低代码产品是比较难做成的,特别是大而全的那种,由于考虑因素过多,导致步调很慢,也很难做到很易用,导致一边投入很大,一边又急切上线落地使用,从而出现平台方觉得投入很苦,使用方觉得不太好用还需吃狗粮的矛盾,往往需经过忍耐很长时间才可「守得云开见月明」,不过很多都在没有见月明的时候就奄奄一息了。反而专门领域的比如说表单、表格、图表低代码搭建活的很不错。还有一些
BaaS 类单领域的活得也还可以,我个人更偏向「易用的可很轻快解决对应领域问题低代码产品方案」。
此外还有一个误区,有人会认为低代码是给所有工程师都可以使用的,其实我认为不太对,低代码最开始出现的初衷是为了解决「让不是程序员的人使用视图、组件、模板和表单等方式快速在不写代码情况下构建应用」,这里我们可以引申一下,低代码更适合两类场景,一类是「让不是这个领域的人也可以很快的写这个领域的应用」,第二类是「在特定领域通过抽象协议模型通过低代码的方式来快速实现产品」。
这里不多扯低代码的优缺点和喜好了,关于低代码产品内部已经有不少,也都比较熟,这里就不多加说明了,刚好最近在思考团队下一步的提效方式,我们来看看业界开源的低代码产品,说不定会有一些输入。
一体化的低代码平台
一体化也即从后端到前端的实现全部给包括了,说实话,我认为这种是最难做的,特别在大公司里面,假如各司其职,同时多个团队协作的话比较难做起来,因为各方的标准协议、数据库模型结构均很难一致,但是假如前端、后端均在一个团队,有一整套统一的模型协议,还是有可能做成的,比如说如下这两个产品。
Appsmith
Appsmith 是一个用于构建内部应用的低代码开源框架,一个印度的创业公司弄的,很适合做企业后台管理系统,常用的 CRUD、Dashboards、数据报表啥的不在话下,Appsmith 有一种 Retool “开源版”的感觉。
在使用上和常规的开发套路很像,第一步画 UI 界面,第二步连接到数据源,第三步将数据源和 UI 界面串起来,第四步部署,只不过将原有编码过程变成了可视化过程。
此外还提供了大量的模板可供使用,包括 Project、Management Support、Human Resources、Sales、Marketing、Finance 等方向,有些思路对于不少低代码方向有一定参照作用。
Budibase
Budibase 官方宣称是一个你会喜欢使用的低代码平台,通过简单易用的方式来提高构建一个应用的速度。和 Appsmith 相比,是另外一种实现方式,此外 Budibase 有内置数据库、外部数据源、设计图形用户界面和自动化部分,在创建 UI 界面的使用使用的是偏设计的方式,整体而言会更加美观一点。
ToolJet
此外 ToolJet 也是一个不错的低代码框架,同样支持接入多种数据源,偏拖拽的方式实现前端的界面,包括对于 mobile 端的一些支持,此外使用的是 JS 比较友好。
除去上面外,nocobase、illa-builder 和 refine 这三款也可以去调研调研。
BaaS 领域的低代码
BaaS (Backend as a Service) 这个概念我是从 2019 年开始弄 Serverless 的时候开始了解到的,当时想着要是有很多好用的 BaaS 能力,那写 FaaS 函数会不知道有多爽。
对于想快速实现一个产品而言,使用 BaaS,开发人员可以专注于前端开发,而无需花费大量时间和精力来构建和维护后端基础设施,这使得开发人员能够快速构建应用程序,更快地将其推向市场。不过这一块当前在国内其实弄得没有国外那么好用和精致,国外有几个还不错的。
Supabase
Supabase 是一个开源工具的组合,使用企业级的开源产品构建 Firebase 的功能。Firebase 是谷歌旗下的一家 BaaS 云服务公司,可以让开发者通过 Firebase 的框架就可以简单地开发一个 App,无需服务器以及基础设施。了解了他是啥,就大概知晓 Supabase 是什么了。
主要功能是提供了数据库托管、身份验证和授权、自动生成 API、函数服务、文件存储等易用能力,相当于这些代码的实现使用者都不需要写了,只需去调用即可,此外提供了 JS/C#/Flutter/Go/Java/Python/Swift/Rust 等客户端库来供使用,更多可见文档。
Appwrite
除去 Supabase,Appwrite 也是一个很有名的完整后端服务能力,可以当做他的竞品,功能差不多,通过视觉化界面极简了从零编写 API 的繁琐过程,在保证软件安全的前提下为开发者创造了一个高效的开发环境。基于 Docker 的端到端开发者平台,其容器化的微服务库可应用于网页端,移动端,以及后端。
提供对应的软件服务,如账户、用户、团队、数据库、存储、云函数、多语言、头像等通用能力,并搭配对应客户端或服务端的开发套件,使用微服务架构方式让其更好扩展。
此外在数据库领域还有一个叫做 SurrealDB
的端到端的云原生数据库,适用于 Web、移动端、无服务器、后端和传统应用程序,通过简化数据库和 API 调用来减少现代应用程序的开发时间,消除对大多数服务器端组件的需求。
Headless CMS
敲代码快 10 年的后端同学应该对 Discuz、DedeCMS、WordPress 这种当时很火的框架很熟悉,还记得大学时期经常用 DedeCMS 去接商业项目,很快很爽。现在这一类偏后端解决方案进一步发展,变得更加简单、美观、好用了,这里简单介绍一下 Strapi 类的无头 CMS,简单而言就是只提供数据的内容管理系统,不关注 UI,内容优先。
Strapi
Strapi 是开源的无头 CMS,使用 JavaScript,很灵活完全可定制,支持不少插件,可以很快的生成一条 REST API 服务,整体使用起来对于前端同学来言还是比较熟悉的,可以一试。
https://www.zhihu.com/video/1593957807543599104
Cube
Cube 是一个用于构建数据应用程序的 Headless 商业智能框架,使用任何来源的数据,将其组织成一致的指标,并将其用于每个数据应用程序。
此外除去 Strapi 、Cube 这两个比较有名的 Headless CMS,你还可以试试 payload、webiny-js 这两个。
流程编排
看起来不少公司都有自己的服务编排的平台,对于大一点的厂,可能每一个 BU 都有一个,不过整体而言都很难做到好用,同时很难讲明白「服务编排比写代码要快要方便」这个点,大多数前期很热闹,中期很平稳,后期很难玩下去,任重而道远,不过很期待正在做的同学能够到达「守得云开见月明」,把这一块能力探得更深一点。
不过在一些特定工作流领域,有做得不错的,比如说 Automate 和 n8n 这两个工具,对于流程编排的建设可以参考一波。
Automate
Automa 是一个浏览器自动化工作流的浏览器扩展,使用连接块的方式来很方便的编排你的常用操作,有自动填充表单、截图、取数据、定时触发、操作浏览器、Web 交互等能力,可以将你重复的操作很好的交给这个工具,好比快捷指令。
https://www.zhihu.com/video/1593957758977409024
他做得比较好的点是很易于使用,同时提供了不少开箱即用的能力,让人很快速就完成自己的需求。
n8n
n8n 是一个可扩展的工作流自动化工具,看了看对于做流程性的节点编排,逻辑控制还是很不错的,此外支持基于代码自部署。
其他奇特的
除去上面常用的低代码能力,还有两个很神器的,其实不少人常用的 Notion 笔记本身也是一个低代码工具,与之对应的开源实现叫 AppFlowy,还有一种通过编写配置 DSL Json 的方式来构建各个部分的功能的开源产品叫做 YAO,最后还有一种是 Airtable 模式的开源方式 NocoDB。
AppFlowy
如上所说,其实弄低代码的同学,很有必要去玩玩 Notion,已经被大量人玩出了花,此外可以试试这个开源的 AppFlowy,基于此,可以来看如何控制数据到界面的这个展示过程。
YAO
YAO 是一款开源应用引擎,使用 Golang 编写,以一个命令行工具的形式存在, 下载即用。适合用于开发业务系统、网站/APP API 接口、管理后台、自建低代码平台等。YAO 采用 flow-based 的编程模式,通过编写 YAO DSL (JSON 格式逻辑描述) 或使用 JavaScript 编写处理器,实现各种功能。
去年第一次见到 YAO 的时候,就被他的创新思路给吸引了,此外他自带的界面能力设计很不错,整体安装体验很顺畅,对于他的产品实现对于想做协议驱动的同学应该有不少借鉴作用。比如说下面这个系统居然是用 JSON 配置给写出来的,包括 UI 的展示。
NocoDB
NocoDB 是 Airtable 的一个开源替代品。Airtable
是啥呢?Airtable 是一个电子表格-数据库混合体,它具有数据库的功能,但实际上是电子表格,还可以把 文字、图片、链接、文档等各种资料整合在一起。反向来看 Notion 的大思路差不多,不过这个是重协作的使用场景。
NocoDB 的作用就是将 MySQL、PostgreSQL、SQL Server、SQLite 或 MariaDB 转换为智能电子表格,使用场景可以参考下面 gif,还是挺有想象空间的。
此外还有一个类 Airtable 领域的新起之秀叫做 ApiTable ,刚开源不久,整体而言做的比较精致,很推荐一玩,可以去研究研究。
https://www.zhihu.com/video/1593958118739914752
最后
只能低代码说这一块是很卷了,不过找到了对应的场景,同时可以真正解决问题,比原本敲代码要快,那基本上是可以找到一个很好的发展空间。此外文章中有不少是个人自以为的东西,假如发现有不对的,欢迎指出。
}

我要回帖

更多关于 低代码用什么语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信