GolemUI: 一个声明式的 JSON 驱动表单引擎

GolemUI: 一个声明式的 JSON 驱动表单引擎

GolemUI 是一个开源的声明式表单引擎,旨在从 JSON 定义中生成动态用户界面。通过将表单结构与渲染逻辑解耦,GolemUI 允许开发者在数据库中或通过大语言模型 (LLMs) 存储、版本化并生成表单架构 (schemas),同时在不同的前端框架中保持一致的 UI。

核心架构与特性

GolemUI 采用 JSON 驱动的表单生成方式,这使得表单的状态和结构可以由数据定义而非硬编码组件来控制。

JSON 引擎与跨框架支持

核心引擎处理 JSON 定义以渲染 UI 组件。这种架构允许单个表单定义在多个环境中渲染,包括:

  • React
  • Angular
  • Vue
  • Lit
  • Vanilla JavaScript

无头组件与样式

GolemUI 提供 28 个无头组件 (headless components),可以使用 CSS 变量进行样式定制。为了确保灵活性,该库提供了 API,允许开发者集成第三方组件库,例如 Material UI、Shoelace 或自定义构建的组件。

类型化编写层

为了避免手动编写原始 JSON 的繁琐工作,GolemUI 包含一个类型化编写层 (typed authoring layer)。这个编程接口允许开发者使用类型化 API 构建表单,然后生成底层的 JSON 定义,从而提升了开发者体验 (DX) 并减少了语法错误。

通过 MCP 进行 LLM 集成

GolemUI 包含一个确定性的模型上下文协议 (Model Context Protocol, MCP) 实现。该工具集旨在帮助 LLMs 生成有效的 JSON 表单定义和代码,提供验证工具以确保 AI 返回的输出符合引擎的架构 (schema) 规范。

社区反馈与技术考量

在发布之后,GolemUI 社区针对该库的实现和长期维护提出了若干技术问题和疑虑。

类型安全与字段关系

一些用户指出,JSON 定义中的字段关系是以字符串形式表达的。这引发了关于缺乏构建时语法检查或自动补全功能的担忧,这可能会在处理大型表单时增加维护难度。

架构演进与迁移

关于 GolemUI 如何处理架构迁移的问题也随之而来。具体而言,对于在数据库中存储了数千个 JSON 定义的用户,社区询问是否内置了版本控制系统或迁移策略来处理组件 API 的变更。

与现有解决方案的对比

行业资深人士指出,“数据结构转表单”的概念并不新鲜,并引用了 JSONForms 等现有项目。这引发了关于 GolemUI 与成熟的替代方案相比,是否能为市场提供足够独特的价值主张的讨论。

已报告的问题

早期采用者报告了一些特定的功能性 Bug,例如日期范围选择器无法按预期工作,以及初始组件集中缺少文件输入类型。

"所有字段关系似乎都是以字符串形式表达的。这表明你可能无法在它们上面使用自动补全或构建时的语法或类型检查。"

"如何处理架构迁移?如果有人在数据库中存储了数千个 JSON 表单定义,而组件 API 发生了变化,是否内置了迁移策略或版本控制系统?"

Sources