低代码开发平台实现思路探索1:iVX

9,226 阅读16分钟

一、何谓低代码开发平台

低代码开发概念的概念,是由著名的研究机构Forrester于2014年正式提出的。

而对于对于低代码开发平台,在维基百科中是这么定义的:

A low-code development platform (LCDP) is software that provides an environment programmers use to create application software through graphical user interfaces and configuration instead of traditional computer programming.

翻译过来就是:

低代码开发平台(LCDP)是一种软件,它通过用可视化图形用户界面(GUI)和配置化代替传统编码方式,给程序员提供一个创建应用软件的环境。

百度百科中关于低代码开发平台,是这么定义的:

低代码开发平台(LCDP)是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法(参考可视编程语言),使具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。 低代码开发平台(LCDP)的正式名称直到2014年6月才正式确定,整个低代码开发领域却可以追溯到更早前第四代编程语言和快速应用开发工具。

Gartner 对低代码平台的定义:

Application platforms provide runtime environments for application logic. They manage the life cycle of an application or application component, and ensure the availability, reliability, scalability, security and monitoring of application logic.

A low-code application platform (LCAP) is an application platform that supports rapid application development, one-step deployment, execution and management using declarative, high-level programming abstractions, such as model-driven and metadata-based programming languages. They support the development of user interfaces, business logic and data services, and improve productivity at the expense of portability across vendors, as compared with conventional application platforms.

An enterprise LCAP supports enterprise-class applications. These require high performance, scalability, high availability, disaster recovery, security, SLAs, resource use tracking, technical support from the provider, and API access to and from local and cloud services.

二、低代码开发平台方面的相关团队和产品

在该赛道,相关的公司或团队还是不少的。

国外方面有:

  • Salesforce(1999年创立)
  • OutSystems(2001年创立)
  • Mendix(2005年创立)
  • Kony(2007年创立)
  • Scratch(2008年由MIT创立)

国内方面主要有:

  • 起步(2006年创立)
  • iVX(2008年创立)
  • 宜搭(2015年创立)
  • J2Paas(2017年创立)
  • YonBuilder(2020年创立)

其中OutSystems在2018年宣布融资3.6亿美金,被视为低代码赛道的独角兽。

除了上述这些之外,国内在低代码相关方向上的产品还有很多。光以阿里系为例,内部各 BU 针对不同业务场景构建保守估计有数十个以上低代码搭建产品(zhuanlan.zhihu.com/p/149168612…

所属产品名称简介网址
阿里系imgcook由设计稿一键智能生成代码imgcook.taobao.org/
阿里系iceluna中后台搭建PaaS平台zhuanlan.zhihu.com/p/149168612
阿里系云凤蝶面向中后台产品的快速研发平台www.yuque.com/seeconf/202…
阿里系宜搭通过简单的拖拽、配置,即可完成业务应用的搭建。旨在为广大中小企业提供一套低成本的企业应用搭建解决方案www.aliwork.com/
阿里系飞冰简单而友好的前端研发体系。海量可复用物料,搭配研发套件极速构建前端应用ice.work/
阿里系淘积木面向广告主的广告创意落地页的搭建平台。打通阿里妈妈多个营销平台和达摩盘等营销工具,提供数十种效果和品牌玩法,组件化快速搭建,体验好,易上手,提供与众不同的体验chuangyi.taobao.com/pages/teemo
阿里系ALP(Alimama Landing Platform)阿里妈妈面向内部小二的一个营销页面搭建平台zhuanlan.zhihu.com/p/150516987
阿里系方舟营销搭建系统--zhuanlan.zhihu.com/p/149396137
阿里系天马天马的搭建服务支撑了十几个 BU,包括已接入和正在接入的 BU,覆盖了国内及国际化的场景,也随着海外的业务部署多个国家,覆盖亚欧美三大板块。上面的方舟就是天马搭建服务的重要用户zhuanlan.zhihu.com/p/150509864
阿里系sula-builder可视化搭建平台build.sula.now.sh/
阿里系菜鸟前端研发工作台CONE(服务上千人)--www.yuque.com/zaotalk/pos…
阿里系sula-cooker--cook.sula.now.sh/
阿里系GGEditor基于 G6 和 React 的可视化图编辑器ggeditor.com/zh-CN
阿里系淘宝小程序搭建----
阿里系乐高----
阿里系金蝉--www.cnblogs.com/sskyy/p/649…
阿里系阿里表哥----
百度Amis通过JSON配置来生成全功能界面fex-team.github.io/amis-editor…
百度showX通用BI平台os.alipayobjects.com/rmsportal/s…
百度百度H5一个在线H5制作平台,依托百度云强大架构,提供稳定的 H5 页面制作服务h5.bce.baidu.com/
腾讯Hulk(原积木系统、Vision)--cloud.tencent.com/developer/a…
北京艺源酷科技创客贴极简的设计工具,丰富的模板,极简的操作,多终端协作,让设计触手可及www.chuangkit.com/designtools…
兔展智能科技兔展将H5技术、大数据及人工智能集成融入企业营销全过程,为企业客户提供以兔展营销云驱动的营销服务,助力企业通过全渠道营销数据化,社交化升级,打通企业增长营销之路www.chuangkit.com/designtools…
武汉夜莺科技壹伴更好用的微信编辑器,但不止于此,你可以使用壹伴小插件来高效地排版、修图、找素材和回消息,50万公众号运营者的共同选择yiban.io/
四川爱趣五科技H5DSH5DS——H5制作工具,H5PS——图片制作工具,H5FPS——帧动画工具,H5CHART——大屏图表制作工具,H5SALE——落地页制作工具,H5BOOK——在线图书制作工具www.h5ds.com/tools/h5
京东MPMH5 卖场可视化搭建系统zhuanlan.zhihu.com/p/149170211
京东通天塔京东商城活动页面构建系统blog.csdn.net/zl1zl2zl3/a…
政采云鲁班PC 站点搭建系统zhuanlan.zhihu.com/p/148915093
iVXiVXIVX是一种可视化开发语言,不需要你有编程基础也可以快速上手使用,不仅如此,ivx配套有全新的开发体系,通过可视化方法、零代码的方式,开发各种应用,这些应用包括:小程序、网页应用(网站、游戏、各种管理系统)、原生应用等。editor.ivx.cn/#10575973
杰明科技闪电数据管理一键给关系数据库生成高品质管理后台,支持Mysql、PostgreSQL、Oracle、SQLite、SQLServer 等主流关系数据库www.gitmen.com/lightning
转转魔方电商可视化运营页面生成系统www.cnblogs.com/zhuanzhuanf…
MakaMAKA在线设计工具5分钟做出好设计(H5平面设计视频)
北京中网易企秀科技易企秀--store.eqxiu.com/index/
美团乐高是美团点评一个快速搭建后台系统页面的平台zhuanlan.zhihu.com/p/27288444
携程乐高乐高平台将活动页面拆分为各种组件模块,运营人员通过自主的配置就能快速上线各种运营页面mp.weixin.qq.com/s/WDCkXEBa0…
人人贷人人贷活动运营平台--zhuanlan.zhihu.com/p/68108055
360即视快速构建 惊艳大屏即视可见arena.360.cn/
北京国炬信息技术JEECG BOOT是一款基于代码生成器的低代码开发平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务。JeecgBoot 提供了一系列低代码模块,实现在线开发真正的零代码:Online表单开发、Online报表、报表配置能力、在线图表设计、大屏设计、移动配置能力、表单设计器、在线设计流程、流程自动化配置、插件能力(可插拔)等等boot.jeecg.com/user/login?…

三、号称“第四代编程语言”的低代码产品iVX

1、为何关注iVX?

在这些产品中,有这么一款号称是“第四代编程语言”的产品引起了我的兴趣。

我们知道,要想能称为语言,就必须能满足各种各样不同的场景的应用的开发,只适应于某一个垂直的场景,显然是不适合称为语言的。这款敢称为语言的低代码产品(更确切地说是无代码产品),就是iVx

iVX据说是从2008年开始探索至今,算得上是国内低代码开发方面探索的先驱了。

2、iVX解决了什么问题?

从介绍上看,iVX的确很强大,它能搞定Web App、小程序(像支付宝、钉钉、微信、百度等小程序都支持)、iOS和Android原生应用、桌面应用(Windows、linux、Mac桌面应用都支持),而且前台、后台、数据库什么的都可以完成。能搞定这么多的,市面上着实不多。

iVX对于其自身是这样定义的:

  • 它是0代码的,但是具有语言属性,可以适应各种场景;
  • 一般的语言是不带IDE的,但是我们iVX是自带IDE的;
  • 同时iVX也自带云端的资源,比如说你的应用浏览特别高、并发特别大、你需要更多的数据库,这些云端资源都会给你自动分配好。

那么,iVX到底解决了什么问题呢?

这里得从为什么无代码这么重要以及开发一个互联网应用需要什么说起。

首先,为什么无代码这么重要呢?

因为普通人不会写程序。学习写代码有诸多难点,集中体现在:

  • 语言数量非常多,不知道怎么选;
  • 语法像天书,和人类语言差太远;
  • 技术更新快,学习不过来。

其次,开发一个互联网应用需要什么呢?

  • 十年之前,云服务引入中国之前,搭服务器(后台开发/运行环境),选数据库(选型/配置/优化)、网络资源(路由器、交换机)、CDN、负载均衡。

  • 有了云服务之后,很多的东西都放到了云上了,自己挑选技术方案就好。会节省一些人力,而且成本更低。

  • 有了iVX之后,只需要iVX开发者,或者叫泛开发者,我们把云上能找到的最好的东西和框架都集成到iVX上面去,方案都是给你挑好的。只需要把你的业务逻辑理清楚,就能把它开发出来。

3、iVX集成了哪些能力?(技术栈)

1)iVX前端技术栈

iVX技术栈如下:

  • React Core:前端生成代码核心,以及前端IDE都是通过React实现的;最早是基于Vue.js(2017-2018年的时候),后来改成了React和React Native,现在正在改成Flutter。

  • Vue的框架:相当于是用React将Vue的框架实现了一遍,将Vue的简洁+React的高效融为一体;

  • 3D组件:three.js,3D实现基于three.js,能实现强大的3D在线编辑功能,可能控制对象旋转、运动、镜头等;能实现720云相关效果;

  • Pixi.js:物理引擎实现;(类似egret)

  • 基于对象的Git:【iVX自有专利技术】

  • 支持自定义组件导入:根据Map格式,自行代码开发或导入npm包,支持React和Vue组件的导入

  • 图标组件:Echart

  • 富文本编辑器:Quill

  • 全景组件:Krpano

  • 默认UI组件:antD

据说后面会把Rust、WebAssembly等更新的技术都加到上面去,来保证它运行速度更快和生成的代码质量更高一些。

2)iVX后台技术栈

  • Go:后台开发语言,像Google的很多大型后台应用都是用GoLANG实现的

  • Go-Micro:微服务架构

  • 中台业务逻辑编译:node.js + 【iVX自有专利技术】

  • AWS IaaS:后台能力集成

  • 腾讯WebRTC

后台技术方面,把AWS上的一些明星的后台应用都搬过来,把它的很多能力透传到我们这边来,然后再把其它的一些东西装进去,以使得iVX是最先进的。

可见它所采用的技术是比较新的。

4、iVX的架构

从iVX的架构上看,最下层,把云计算的基础资源组装成组件和基础服务,封装到iVX的后台,比如说计算、分发、MQ(消息队列)、Redis、Aurora(分布式的MySQL数据库),所有这些非常重要的云计算产品,我们都封装到里面去了,所以只需要把组件用好就可以了。同时,下载之后还可以兼容其它的数据库,如Postgre、SQLServer、Oracle。

中间这一层其实是最关键的,包括事件面板——中台逻辑控制。在iVX中,最基础的数据、计算、组件等就是后台。所有那些跟业务逻辑相关的就是中台。小模块就是指前端和后端中可以重用的组件,就把它封装成小模块。

自定义函数,允许你重用一些代码。你可以自定义一个前端组件加进来,添加到前端组件库中。

再往上层就是兼容的各种系统。

再往上层就是各种业务解决方案。

做这个东西是需要很长的时间去做的,不然你没有积累是搞不定的。因为太复杂,你要做一套新的编程体系,去实现编程能力。现在看起来真正能够达到语言能力的,看起来还是我们iVX比较接近。国内的那些基本都是做某一个细分领域的,比如说做表单、做工作流、做在线协作、做CRM或任务管理的。

5、iVX的惊艳之处和不适合做的事情

这款iVX,目的是要解决普通人不会写程序,但又想做出来应用的问题。iVX给出的解决方案是:“去掉语法,保留逻辑”。

其惊艳之处主要两个方面:

1)对于组件的抽象

iVX认为:

构造通用的应用需要一些什么组件,解决这个问题就意味着需要对现有的所有应用和可能的应用场景进行拆分和抽象。对于一个应用抽象或许还可以,但是把抽象出来组件反过来可以构建各种应用,这又是另外一回事儿了。这就类似于一个NP问题,也许永远没有一个最优解,但是通过不断的努力和尝试,iVX已经基本上可以构建任何应用了。

组件的抽象非常漫长,而且抽象的层次也非常关键,什么是基础组件,什么是基础组件之上抽象的扩展组件(这种组件更加实用,往往可以马上表达某一功能),可能在之上还有模型和模块的概念,在之上才是模板和模板复用。

之后,所有的组件都是对象化的封装(包括事件本身),都有“三位一体”的表达,这就是“对象属性”“触发条件”“对象函数”。比较难的是后台部分,前端还有一些库的方法可以参考,后台抽象难度会更大一些。

笔者认为,iVX对于组件抽象的认识,是非常深刻的。

2)逻辑的可视化编辑

我们知道,在低代码领域,如何用一套可视化配置的方式来表达“程序逻辑”,是一个难点问题。

正如iVX文档中所言:

所有的程序开发,抛开了界面和数据,剩下的就是逻辑,逻辑成应用的灵魂,也是最难0代码表达的。

iVX创造了基于的“条件触发式”的非代码逻辑方式,以及为这个方式专门提供了一个事件编辑面板,支持前端、中台、后台的逻辑编辑。同时iVX支持MySQL的所有操作逻辑。

如下图:

这一点是很有启发性的。最近笔者也一直在思考怎么用可视化搭建+配置的方式连逻辑的编排也能够搞定的事情,这款产品的做法给了我一个已经实现了的可参考模式,而且号称是做到了图灵完备。虽然配置成本不低,从易用性上看,给到用户的上手门槛还是有点儿高,但终归是一种能够跑通的办法。

iVX完全做到这一点,可以近似看作是一种可视化编程语言(VPL:Visual Programming Language)了。

类似的有:

Scratch的可以拖拽的语法块,来生成目标语言程序这种方式;

类似Mendix或Outsystems的通过流程图的方式,自动生成目标可执行语言的方法。

以上两种均采用了面向过程的方法来设计整个逻辑过程。

而iVX可以算是另外一类可视化编程语言,采用的是“事件触发”逻辑。

多种可视化编程语言在适应的领域上:

  • Scratch、Blockly只适合儿童编程,只能生成非常简单的应用;(WebApp,Flash)

  • Mendix等产品,只适合企业场景,特别是BPM、OA场景的应用开发;(应用类型:WebApp)

  • iVX可以支持众多场景的开发,企业场景、个人应用、游戏等都支持。(应用类型:WebApp 手机原生应用 桌面原生应用 小程序)

3) 中间语言和各种目标系统的编译器

通过iVX前端拖拽组件和配置完事件之后,就会生成中间代码,它类似描述性语言。这个语言由iVX自己构造,类似需要积累一个字典一样,后续通过这个“字典”,将一个一个应用编辑成一篇篇“文章”。

然后是要支持各种目标系统的编译器,将中间语言转成目标系统的应用。后台组件也会编译成后台代码,然后分配到云端。

相应地,iVX也有一些不适合做的事情:

  • 直接用iVX实现比较复杂的算法(正确的姿势是把算法封装到一个对象中,或者直接通过API的方式进行调用,而不是直接通过iVX实现),技术上可以,但是没有必要,可能更麻烦;

  • 不要用来做MMORPG等超大规模的游戏;

  • 复杂硬件对接或协议对接;(现在iVX支持WebSocket,支持http/https,支持MQTT协议访问,特别是对MQTT做了重点支持)。

不过,整体上iVX这款产品的语言属性和图灵完备的逻辑配置的支持,还是给低代码开发平台向无代码平台的挺进提供了不错的借鉴的。不要看无代码和低代码只是一字之差,但其实低代码和无代码之间,差距还是非常远的,可以说是完全两个不同的事情。

据说通过iVX工具,以前10个人三个月的工作,现在不到三个人一个月就搞完了,效果还是非常明显的。在官方提供的视频中,演示了做一个简单的可以登录、录入、更新、查询图书管理系统,并且支持手机端查看,连操作带讲解,共计25分41秒的时间。虽然操作看起来还是比较复杂,而且演示者是熟手,但还是令人欣喜的。

参考资料:

1、iVX的官网内容和视频

2、awesome-lowcode

3、维基百科:低代码开发平台

4、维基百科:可视化编程语言

5、百度百科:低代码开发平台