5、架构:通用 Schema 设计

作为前端开发一定会非常熟悉 AST 抽象语法树(Abstract Syntax Tree),当浏览器加载 JS 代码时,它会首先将代码转换为一棵抽象语法树(AST),然后再根据 AST 来渲染对应的 DOM 结构,对于一款低代码产品来说,如果能直接去解析 AST 肯定是最方便但这也是麻烦的,因为 AST 包含的内容非常多,所以大部分的低代码产品都会使用自定义的 Schema 来描述搭建的内容。

但也由于 Schema 只是一种通用的协议,并没有非常好的规范与最佳实践,现阶段都是属于各自为战的边界探索阶段,所以各个低代码平台中的 Schema 的规范并不相同。

其实就算不是探索阶段,大多数平台的低代码产品肯定也很难做到统一,除了开发者的习惯也会涉及到用户习惯以及行业差异、产品定位等,此外商业产品为了盈利会主动营造技术壁垒、增加用户粘性、培养用户习惯以及迁移成本。

但当我们想把这个产品升级为 Pro Code 或者想再添加更多交互功能的时候,是不是等同于又重新创建了一个新 DSL,这也是我个人感觉低代码一个非常尴尬的点

当然在产品的初期由于时间与资源有限,肯定不会最开始就设计 DSL 解析,所以接下来我们将围绕 Schema 来逐步分析从设计落地以及扩展的全过程。

什么是 Schema 协议


Schema 本质上就是一个 JSON 格式的定义块,通过抽象属性定义来表达页面和组件的布局、属性配置、依赖关系、表达式解析,如果在偏向业务也有页面路由、多语种、数据源、权限等等各种各样的抽象声明。 因此,我们也将刚刚提到的内容统称为 Schema 协议,它也属于元数据结构模型的范畴。

如果想要进行更多的了解,可以 Google 看看元数据的相关内容。或者入群探讨,小册里就不再过多展开。

什么是协议渲染


当了解了 Schema 的基本概念后,接下来就需要具体来实施和设计相关 Schema 协议的实现了。

在正式开始设计协议之前,我们一起先来看下面的例子,一起来了解下协议渲染究竟是什么东西?

相信很多朋友为了提高效率或多或少都封装过一些通用型的组件,比如通过 JSON 配置来实现一组表单布局,如下图,是一个简单的表单区块:

5、架构:通用 Schema 设计_第1张图片

前端实现的代码如下所示: