# 什么是比较好的低代码产品

> 说到低代码，喜欢的人特别喜欢，不喜欢的人很不喜欢，此外也有“假装”去喜欢的，也有喜欢得不明不白的，我现在对于低代码是有点儿喜欢的那种，不过只限于在特定领域，实现需求的速度比熟练工程师写代码要快的场景，最近在思考团队下一步的提效方式，来看看业界开源的低代码产品，说不定会有一些输入。

- 发布日期: 2023-01-02
- Author: Tw93
- HTML: https://tw93.fun/2023-01-02/low-code.html
- English translation: https://tw93.fun/en/2023-01-02/low-code.md
- 全部文章: https://tw93.fun/posts.md

---

## 随便扯扯

可能大家谈到低代码想到更多的是低代码搭建页面的平台，内部不少也是此种，其实对于偏逻辑编排、服务 BaaS 能力的偏可视化方式其实也算低代码，旨在「**通过少写代码，用更便捷的方式来实现原本需写代码的工作**」。

说到低代码，喜欢的人特别喜欢，不喜欢的人很不喜欢，此外也有“假装”去喜欢的，也有喜欢得不明不白的，我现在对于低代码是有点儿喜欢的那种，不过只限于「**在特定领域，实现需求的速度比熟练工程师写代码要快的场景**」，这种场景下用起来真心会比较爽，可能也用得不爽的时候，但是这种不爽远小于他带来的效益减去原本敲代码的投入，也很值得将这类产品做到好用爱用。

其实低代码产品是比较难做成的，特别是大而全的那种，由于考虑因素过多，导致步调很慢，也很难做到很易用，导致一边投入很大，一边又急切上线落地使用，从而出现平台方觉得投入很苦，使用方觉得不太好用还需吃狗粮的矛盾，往往需经过忍耐很长时间才可「守得云开见月明」，不过很多都在没有见月明的时候就奄奄一息了。反而专门领域的比如说表单、表格、图表低代码搭建活的很不错。还有一些 BaaS 类单领域的活得也还可以，我个人更偏向「**易用的可很轻快解决对应领域问题低代码产品方案**」。

此外还有一个误区，有人会认为低代码是给所有工程师都可以使用的，其实我认为不太对，低代码最开始出现的初衷是为了解决「**让不是程序员的人使用视图、组件、模板和表单等方式快速在不写代码情况下构建应用**」，这里我们可以引申一下，低代码更适合两类场景，一类是「**让不是这个领域的人也可以很快的写这个领域的应用**」，第二类是「**在特定领域通过抽象协议模型通过低代码的方式来快速实现产品**」。

这里不多扯低代码的优缺点和喜好了，关于低代码产品内部已经有不少，也都比较熟，这里就不多加说明了，刚好最近在思考团队下一步的提效方式，**我们来看看业界开源的低代码产品，说不定会有一些输入**。

## 一体化的低代码平台

一体化也即从后端到前端的实现全部给包括了，说实话，我认为这种是最难做的，特别在大公司里面，假如各司其职，同时多个团队协作的话比较难做起来，因为各方的标准协议、数据库模型结构均很难一致，但是假如前端、后端均在一个团队，有一整套统一的模型协议，还是有可能做成的，比如说如下这两个产品。

### [Appsmith](https://github.com/appsmithorg/appsmith)

Appsmith 是一个用于构建内部应用的低代码开源框架，一个印度的创业公司弄的，很适合做企业后台管理系统，常用的 CRUD、Dashboards、数据报表啥的不在话下，Appsmith 有一种 [Retool](https://retool.com/) “开源版”的感觉。

<img src="https://cdn.tw93.fun/blog/upic/gVjjkM.svg" width=800 />

在使用上和常规的开发套路很像，第一步画 UI 界面，第二步连接到数据源，第三步将数据源和 UI 界面串起来，第四步部署，只不过将原有编码过程变成了可视化过程。

<img src="https://cdn.tw93.fun/blog/upic/LRvKll.gif" width=800 />

此外还提供了大量的模板可供使用，包括 Project、Management Support、Human Resources、Sales、Marketing、Finance 等方向，有些思路对于不少低代码方向有一定参照作用。

### [Budibase](https://github.com/Budibase/budibase)

Budibase 官方宣称是一个你会喜欢使用的低代码平台，通过简单易用的方式来提高构建一个应用的速度。和 Appsmith 相比，是另外一种实现方式，此外 Budibase 有内置数据库、外部数据源、设计图形用户界面和自动化部分，在创建 UI 界面的使用使用的是偏设计的方式，整体而言会更加美观一点。

<img src="https://cdn.tw93.fun/blog/upic/bDoZda.jpg" width=800 />

### [ToolJet](https://github.com/ToolJet/ToolJet)

此外 ToolJet 也是一个不错的低代码框架，同样支持接入多种数据源，偏拖拽的方式实现前端的界面，包括对于 mobile 端的一些支持，此外使用的是 JS 比较友好。

<img src="https://cdn.tw93.fun/blog/upic/9eo9NR.jpg" width=800 />

除去上面外，[nocobase](https://github.com/nocobase/nocobase)、[illa-builder](https://github.com/illacloud/illa-builder) 和 [refine](https://github.com/refinedev/refine) 这三款也可以去调研调研。

## BaaS 领域的低代码

BaaS (Backend as a Service) 这个概念我是从 2019 年开始弄 Serverless 的时候开始了解到的，当时想着要是有很多好用的 BaaS 能力，那写 FaaS 函数会不知道有多爽。

对于想快速实现一个产品而言，使用 BaaS，开发人员可以专注于前端开发，而无需花费大量时间和精力来构建和维护后端基础设施，这使得开发人员能够快速构建应用程序，更快地将其推向市场。不过这一块当前在国内其实弄得没有国外那么好用和精致，国外有几个还不错的。

### [Supabase](https://github.com/supabase/supabase)

Supabase 是一个开源工具的组合，使用企业级的开源产品构建 Firebase 的功能。Firebase 是谷歌旗下的一家 BaaS 云服务公司，可以让开发者通过 Firebase 的框架就可以简单地开发一个 App，无需服务器以及基础设施。了解了他是啥，就大概知晓 Supabase 是什么了。

<img src="https://cdn.tw93.fun/blog/upic/XppYbm.jpg" width=800 />

主要功能是提供了数据库托管、身份验证和授权、自动生成 API、函数服务、文件存储等易用能力，相当于这些代码的实现使用者都不需要写了，只需去调用即可，此外提供了 JS/C#/Flutter/Go/Java/Python/Swift/Rust 等客户端库来供使用，更多可见[文档](https://supabase.com/docs)。

<img src="https://cdn.tw93.fun/blog/upic/NiGx5z.jpg" width=800 />

### [Appwrite](https://github.com/appwrite/appwrite)

除去 Supabase，Appwrite 也是一个很有名的完整后端服务能力，可以当做他的竞品，功能差不多，通过视觉化界面极简了从零编写 API 的繁琐过程，在保证软件安全的前提下为开发者创造了一个高效的开发环境。基于 Docker 的端到端开发者平台，其容器化的微服务库可应用于网页端，移动端，以及后端。

<img src="https://cdn.tw93.fun/blog/upic/045fTb.png" width=800 />

提供对应的软件服务，如账户、用户、团队、数据库、存储、云函数、多语言、头像等通用能力，并搭配对应客户端或服务端的开发套件，使用微服务架构方式让其更好扩展。

<img src="https://cdn.tw93.fun/blog/upic/8Wp6qC.svg" width=800 />

此外在数据库领域还有一个叫做 **[SurrealDB](https://github.com/surrealdb/surrealdb)** 的端到端的云原生数据库，适用于 Web、移动端、无服务器、后端和传统应用程序，通过简化数据库和 API 调用来减少现代应用程序的开发时间，消除对大多数服务器端组件的需求。

## Headless CMS

敲代码快 10 年的后端同学应该对 Discuz、DedeCMS、WordPress 这种当时很火的框架很熟悉，还记得大学时期经常用 DedeCMS 去接商业项目，很快很爽。现在这一类偏后端解决方案进一步发展，变得更加简单、美观、好用了，这里简单介绍一下 Strapi 类的无头 CMS，简单而言就是只提供数据的内容管理系统，不关注 UI，内容优先。

### [Strapi](https://github.com/strapi/strapi)

Strapi 是开源的无头 CMS，使用 JavaScript，很灵活完全可定制，支持不少插件，可以很快的生成一条 REST API 服务，整体使用起来对于前端同学来言还是比较熟悉的，可以一试。

<img src="https://cdn.tw93.fun/blog/upic/IviIfL.gif" width=800 />

### [Cube](https://github.com/cube-js/cube.js)

Cube 是一个用于构建数据应用程序的 Headless 商业智能框架，使用任何来源的数据，将其组织成一致的指标，并将其用于每个数据应用程序。

<img src="https://cdn.tw93.fun/blog/upic/LhZJs7.png" width=800 />

此外除去 Strapi 、Cube 这两个比较有名的 Headless CMS，你还可以试试 [payload](https://github.com/payloadcms/payload)、[webiny-js](https://github.com/webiny/webiny-js) 这两个。

## 流程编排

看起来不少公司都有自己的服务编排的平台，对于大一点的厂，可能每一个 BU 都有一个，不过整体而言都很难做到好用，同时很难讲明白「服务编排比写代码要快要方便」这个点，大多数前期很热闹，中期很平稳，后期很难玩下去，任重而道远，不过很期待正在做的同学能够到达「守得云开见月明」，把这一块能力探得更深一点。

不过在一些特定工作流领域，有做得不错的，比如说 Automate 和 n8n 这两个工具，对于流程编排的建设可以参考一波。

### [Automa](https://github.com/AutomaApp/automa)

Automa 是一个浏览器自动化工作流的浏览器扩展，使用连接块的方式来很方便的编排你的常用操作，有自动填充表单、截图、取数据、定时触发、操作浏览器、Web 交互等能力，可以将你重复的操作很好的交给这个工具，好比快捷指令。

<img src="https://cdn.tw93.fun/blog/upic/7lTSua.gif" width=800 />

他做得比较好的点是很易于使用，同时提供了不少开箱即用的能力，让人很快速就完成自己的需求。

### [n8n](https://github.com/n8n-io/n8n)

n8n 是一个可扩展的工作流自动化工具，看了看对于做流程性的节点编排，逻辑控制还是很不错的，此外支持基于代码自部署。

<img src="https://cdn.tw93.fun/blog/upic/eZ0K1t.png" width=800 />

## 其他奇特的

除去上面常用的低代码能力，还有三个很神器的，其实不少人常用的 Notion 笔记本身也是一个低代码工具，与之对应的开源实现叫 AppFlowy，还有一种通过编写配置 DSL Json 的方式来构建各个部分的功能的开源产品叫做 YAO，最后还有一种是 [Airtable](https://www.airtable.com/) 模式的开源方式 NocoDB。

### [AppFlowy](https://github.com/AppFlowy-IO/AppFlowy)

如上所说，其实弄低代码的同学，很有必要去玩玩 Notion，已经被大量人玩出了花，此外可以试试这个开源的 AppFlowy，基于此，可以来看如何控制数据到界面的这个展示过程。

<img src="https://cdn.tw93.fun/blog/upic/LOFHaV.jpg" width=800 />

### [YAO](https://github.com/YaoApp/yao)

YAO 是一款开源应用引擎，使用 Golang 编写，以一个命令行工具的形式存在, 下载即用。适合用于开发业务系统、网站/APP API 接口、管理后台、自建低代码平台等。YAO 采用 flow-based 的编程模式，通过编写 YAO DSL (JSON 格式逻辑描述) 或使用 JavaScript 编写处理器，实现各种功能。

<img src="https://cdn.tw93.fun/blog/upic/SpKs8N.jpg" width=800 />

去年第一次见到 YAO 的时候，就被他的创新思路给吸引了，此外他自带的界面能力设计很不错，整体安装体验很顺畅，对于他的产品实现对于想做协议驱动的同学应该有不少借鉴作用。比如说下面这个系统居然是用 JSON 配置给写出来的，包括 UI 的展示。

<img src="https://cdn.tw93.fun/blog/upic/n2J5a3.gif" width=800 />

### [NocoDB](https://github.com/nocodb/nocodb)

NocoDB 是 [Airtable](https://www.airtable.com/) 的一个开源替代品。Airtable 是啥呢？Airtable 是一个电子表格-数据库混合体，它具有数据库的功能，但实际上是电子表格，还可以把 文字、图片、链接、文档等各种资料整合在一起。反向来看 Notion 的大思路差不多，不过这个是重协作的使用场景。

NocoDB 的作用就是将 MySQL、PostgreSQL、SQL Server、SQLite 或 MariaDB 转换为智能电子表格，使用场景可以参考下面 gif，还是挺有想象空间的。

<img src="https://cdn.tw93.fun/blog/upic/7mUPKT.gif" width=800 />

此外还有一个类 Airtable 领域的新起之秀叫做 **[ApiTable](https://github.com/apitable/apitable)** ，刚开源不久，整体而言做的比较精致，很推荐一玩，可以去研究研究。
<img src="https://cdn.tw93.fun/blog/upic/JmDgxL.gif" width=800 />

## 最后

只能低代码说这一块是很卷了，不过找到了对应的场景，同时可以真正解决问题，比原本敲代码要快，那基本上是可以找到一个很好的发展空间。此外文章中有不少是个人自以为的东西，假如发现有不对的，欢迎指出。
