2020年Low-Code成为前端的一大火热话题,相信2021年低代码的热还会继续。那么,究竟什么是低代码?它的核心精神是什么?它的技术原理是什么?本期Robust就带你走进Low-Code的世界。
在线收听
网易云音乐:点击播放
喜马拉雅:点击播放
你还可以在苹果自带的 Podcast 应用、小宇宙APP、QQ音乐中搜“Robust”找到我们的节目收听。
捐赠支持
求打赏🙇如果你觉得 Robust 这样一档技术类的谈话节目还不错,希望我继续做下去,不妨打赏支持。
内容大纲
概念
Low-Code是由Forrester(一家全球市场研究公司)在2014年提出的(全称LCAP, Low-Code Application Platform)。
虽然市面上定义各种各样,但是Low-Code的本质核心价值在于:
- 低代码开发平台能够实现业务应用的快速交付。
- 低代码开发平台能够降低业务应用的开发成本。
形式上,Low-Code表现为,事先通过工具生成部分代码,然后开发者需要在这份代码基础上再继续开发。现在在wikipedia上的词条叫做LCDP(Low-Code Development Platform,低代码开发平台)。
- 低代码开发平台(LCDP)本身也是一种软件,它为开发者提供了一个创建应用软件的开发环境。看到“开发环境”几个字是不是很亲切?对于程序员而言,低代码开发平台的性质与IDEA、VS等代码IDE(集成开发环境)几乎一样,都是服务于开发者的生产力工具。
- 与传统代码IDE不同的是,低代码开发平台提供的是更高维和易用的可视化IDE。大多数情况下,开发者并不需要使用传统的手写代码方式进行编程,而是可以通过图形化拖拽、参数配置等更高效的方式完成开发工作。
另外一家国际知名调研机构Gartner在2012年就提出了Citizen Developer(人人都是开发者)的概念。这个词大意是:借助于一些组件化、可视化平台,一些不具备编程技能、不懂代码和开发的“小白”,也能自主组织或参与开发,从而把代码开发由一项程序员专属技能扩展到更广泛的人群,甚至是全人类。在低代码语境下,Citizen Developer使用低代码平台生成符合他们意图的半成品代码,然后交由专业的开发者,完成剩余的能够真正部署到生产环境的产品。
Gartner是一个非常有趣的机构,它很喜欢制造新概念(新名词),但是不凑巧,自己提出的概念,最后被Forrestter用Low-Code抢了风头,于是他决定必须扳回一局,开始想新名词,在2017年发明了HpaPaaS(High-productivity application Platform as a Service)这个概念,但是实际上就是跟Low-Code是一回事,反而由于概念太过专业(和SaaS, PaaS概念混在一起),反而没有流行开,而Low-Code这个词看上去比较low(土),但是却成为当前该领域的术语。
但是Gartner更早提出的aPaaS这个概念确实火了。aPaaS是介于PaaS和SaaS之间的一种服务模式,主要有两个特征:
- 提供快速开发的环境,用户在几个小时内就能完成应用的开发、测试、部署,并能够随时调整或更新。
- 低代码或零代码,非技术人员就能完成应用开发
而这里的零代码,也就是No-Code,则是和Low-Code相对的一个概念。Low-Code还有中间的半成品代码,还需要专业开发者完成后续开发工作,而No-Code则是完全由Citizen Developer完成开发,直接测试部署,不需要专业开发者参与。 aPaaS平台,国外发展比较快的厂商有:Redmine,Jira,Odoo,Smartsheet, Airtable和Zoho Creator,中国市场有简道云、明道云、氚云和伙伴云等厂商。它们的产品形态,基本上就是企业主上它们的在线平台,通过填写、拖拽等形式,完成一个业务及其流程的设计,然后发布,获得对应业务的链接,再发送给自己的员工或客户,让员工或客户在这个链接对应的应用中完成相应的操作。
从商业价值来看,aPaaS已经证明了自己的价值,而低代码平台至今仍然是概念火,但赚钱能力存疑。
国内外Low-Code/No-Code列举
Mendix-被西门子用6亿欧元收购的新独角兽,低代码开发平台。
Outsystems-独角兽公司,国外知名的drag drop IDE。
Odoo-准备进军中国的低代码编程工具。
PowerApps:微软旗下
AppMaker: 谷歌旗下
牛刀:可以搭小程序等
搭搭云
APICloud
iVX-国内的可视化编程工具代表。
宜搭:阿里云钉钉旗下。
活字格
简道云:含自定义表单、自定义报表、自定义流程引擎、消息提醒等模块
轻流
飞冰
Gin-Vue-Admin
Low-Code技术解析
首先,区分场景
- 在线设计应用,发布后获得一个url,用户访问这个url完成业务,例如问卷、H5活动页
- 在线对应用的界面、流程、逻辑进行设计(编排),导出api接口,应用根据接口描述自己决定怎么渲染和创建运行时
第一种场景适合功能单一的即时性应用。
第二种场景适合功能复杂的业务系统。
方案一
用户在平台对界面和数据进行编排,点击发布,平台立即生成数据库表、接口、静态文件,并完成打包,发布到云服务和CDN。使用时直接访问html文件。
方案二
用户在平台对界面和数据进行编排,点击发布,平台立即生成数据库表、接口、半成品代码,之后由专业开发者完成剩余代码开发,并按主流构建发布逻辑完成发布。
方案三
用户在平台对界面和数据进行编排,点击发布,平台立即生成数据库表、接口、布局配置(文件或存表)。运行时,有后端根据配置文件或配置表动态渲染页面。
方案四
用户在平台对界面和数据进行编排,点击发布,平台立即生成数据库表、接口、布局描述DSL。运行时,前端通过API接口读取DSL,并进行解析,完成渲染,并按DSL中提供的信息提交数据。
其次,技术要点
1. 可视化拖拽
参考《可视化拖拽组件库一些技术要点原理分析》
2. 数据表
例如问卷,创建一份问卷之后,除了问卷作为一个表单的交互层面的东西,还要有用来保存该表单提交的所有记录的数据库表,以及用于接收提交的API接口。
3. 代码生成
参考Gin-Vue-Admin
4. 生成静态文件
基于SSR的思路,直接生成html。
或者不直接生成HTML,而是利用webpack进行打包。
5. 配置
从可视化拖拽/填写->配置文件/表->渲染。
生成配置过程比较麻烦,苦力活,需要根据设定好的协议,例如比较火的JSON Schema,生成配置。
从配置到渲染过程就相对简单,读取配置,根据定好的规则,选择使用不同的组件和配置的逻辑进行渲染。
6. DSL
过程和5配置一样,从可视化拖拽/填写->DSL->渲染。只是更加抽象化,通过自己发明的一套特殊语法来完成对功能的描述。
由于DSL是一种编程的语言,所以,目标是简单,因此,对于使用者而言,可以不需要可视化拖拽界面,而是直接写DSL即可,例如腾讯问卷可以使用文本方式编辑和生成问卷,以及使用高级方式编辑问卷各个题目之间的逻辑关系。
用户可以在可视化编辑和DSL之间切换,根据自己喜好来使用。
7. 逻辑编排
类似Scratch、nodered
8. BPM流程引擎、表单引擎、布局引擎
需要投入大量时间和人力去研究和填坑。
Low-Code是否会让程序员失业?
会。看看搭搭云的介绍视频就知道对程序员的友好程度有多差,它里面明确传递给企业老板一个信息:不需要一个开发团队了,一两个程序员就搞定。
但是,你要看清楚场景。很多使用Low-Code平台的企业,要么是那种小企业,他们巴不得不需要程序员,对于程序员而言,也不是职业发展的可靠伙伴,不去也罢;要么是大企业中某些业务环节,例如明源云解决房地产领域的业务,这种不仅不会让程序员失业,更多的反而是帮助程序员节省时间和精力。
我需要自己搭一套Low-Code平台吗?
除非你的企业为其他企业提供类似aPaaS这样的服务或产品,否则千万不要为了自己的单一业务开发Low-Code平台,它说白了,是用一套成本非常高的技术,通过低价量大来实现回本,所以为了自己当前单一业务去开发平台,是吃力不讨好。但是并不是说你不能借用里面的一些技术点,例如基于拖拽生成的技术。
但是,如果你能够沉淀出类似飞冰这样的产品,那对于需要反复使用某些架构的新项目来说就是好事。简单说,就是,把你所接触的业务沉淀到一个低代码工具中,当有新产品需要该业务的逻辑时,马上拿出低代码工具,生成几乎所有必须的套件,然后才开始开发,那种感觉还是很爽的。
结语
抛开Low-Code这一概念,我们在业务开发中,有的时候也是需要基于某种协议做动态定义与渲染的,特别是某些比较特定的业务系统中,需求方总是希望自己可以通过在线修改,来快速完成需求调整,而非要通过该代码和发版。掌握这种抽象能力,对我们的开发能力提升,有非常大的帮助。至于Low-Code平台,目前除了aPaaS平台,类似问卷这样的纯表单应用,还有前两年在线生成H5请柬、贺卡等应用,也是有很大的空间,掌握Low-Code整套技术,对无论在企业内打工,还是自己创业,都有帮助。
2021-03-21 3446