规模化的组织,经常要面临这样的挑战:每个应用的基础设施是相同的,部分的代码也是相同的,甚至于它们可能只是数据模型不同而已。结果却导致了,他/她们要一次又一次地重新编写一个应用。

对于一个新的应用而言,它需要对接大量的三方(非自己团队)服务。服务之间的不断变化 ,导致了对应的使用方也需要发生变化。不断变化的业务,导致了前台的设计不断变化。为了应对快速谈的的前台服务,后台便诞生了中台,以提供快速的响应能力。而随着中台进一步沉淀,从某种形式上趋于稳定,而前台仍然需要快速地响应能力。

于是乎,作为一个前端开发人员,我们不断提炼和复用代码,想着的模式在上一篇文章 减少代码量的 7~8 种方式 中提到了:

脚手架
组件库
模式库
模板和模板应用
对应的,我们还创建了一系列的 CLI、工具集、编程器插件以及设计系统,以完成整个系统的快速开发。然而,我们还缺少一套有效的工具,来统一化的管理这些工具。

换句话来说,就是:我们需要一个前端的中台,它便是无代码/低代码编程。

什么是无代码编程?
无代码/低代码是一种创建应用的方法,它可以让开发人员使用最少的编码知识,来快速开发应用程序。它可以在图形界面中,使用可视化建模的方式,来组装和配置应用程序。开发人员可以直接跳过所有的基础架构,只关注于使用代码来实现业务逻辑。

当然,从开发人员的角度来看,降低代码量,可能是:

框架本身处理了复杂性。毕竟 “复杂度同力一样不会消失,也不会凭空产生,它总是从一个物体转移到另一个物体或一种形式转为另一种形式。”
代码生成减少了工作量。大量的复制、粘贴需要更多的时间。
流程
只是凭借这个概念,我们是无法理解无代码编程的。于是,我画了一张图来展示相应的架构和流程:

依照我的观点来看,我将无代码编程分为了两部分:

用于构建 UI 的编辑器——一种在线的拖拽式 UI 设计和页面构建工具
用于编写业务逻辑的流编辑器——通过流编程的方式来编写业务代码(多数是对于数据的处理)
UI 编程器。为了设计出我们的 UI 构建器,我们需要准备好一系列的基础设施:

UI 编程器。用于拖拽式设计 UI。
空白脚手架。一个带有完整的应用生命周期的项目,但是它是一个空白的项目——用于我们在构建 UI 的过程中,随时随地的添加组件和代码。
设计系统。我们需要一个完整的组件库,大量的页面模板,以及一定数量的模板应用,减少相应的开发工具量。
代码片段集。它将设计系统中的组件库进一步实例化成代码段,在完成编辑后通过 CLI 来动态编辑代码。
DSL(领域特定语言,可选)。中间生成物,用于隔离框架与设计。
流编程器。随后,为了在

流编程器。用于拖拽式、输入编写业务代码。
后端服务。如果不能提供现成的后端服务,则需要拥有一个标准的 API 规范,以及相应的 mock server。
模式库。包含相应的业务处理代码,如通用的登录、数据获取、UI 交互等。
DSL(领域特定语言,可选)。同上
当然了,我们还需要能实时预览构建出来的应用。随后,我们执行了构建,而后构建出了一个半成品应用。开发人员只需要在它的基础上开发应用即可。而在开发人员开发的过程中,我们可以设计一系列的工具,来帮助开发人员更快速地构建应用。

编辑器插件。包含设计系统、模式库等的自动完成代码,以及组织内部常用的代码库。
调试工具。对于混合类型的应用而言,我们还需要一个开发工具来快速构建应用。
从上述的流程上来看,无代码编程还具有以下的特点:

拖放式界面。又或者是可视化模型——基于节点和箭头
基于视觉的设计。
可扩展的设计。如对于插件、插件商店,社区等一系列的支持。
跨平台功能。支持 PC Web 应用开发,支持移动应用构架等。
强大的部署后。即平台包含着整个应用的生命周期。
拥有丰富的集成支持。可以随意的找到需要的组件,以及对应的后台服务。
配置化。它也意味着大量的自定义配置。
自制的领域特定语言(可选)。用于构建时优化。
优缺点
相应的,它具有以下的一些特点:

高效。不用多说,节省时间和开发成本。
有限的 Bug,安全性。
低成本。其所需的预算非常有限。
易用(取决于设计)。
开发速度更快。
开发过程中的 AI 。
维护成本低。
对应的相应的缺点有:

仍然需要编程技能。
受限的自定义能力。
可扩展性成了新的问题。
集成受限。
就当前而言,低代码开发平台通常分为两大类:

对于外部:制作简单的产品,如网络移动应用程序
对于内部:为您的团队