首页 > 编程知识 正文

简要说明表单的基本工作原理,java自定义表单

时间:2023-05-05 01:04:06 阅读:113374 作者:3368

作者: zddyz,wyddy

在背景控制台类web APP应用程序中,窗体是最常见的交互格式。 用户只需填写表格并单击“提交”即可完成数据的创建或修改操作。

第一个前端开发人员根据业务模式和具体需求,在**一个个**中创建或声明表单中的每个字段,并在测试通过后在线发布。 渐渐地,开发人员开始将常用方法抽象到表单库中并重用,以提高开发效率。 但是,随着业务的复杂性和需求的发展,对表单的显示形式和灵活性的要求也在提高。 现有表单库只能解决部分问题,开发人员需要花费大量精力更新表单域和开发新表单。

有没有什么方法可以让开发人员在快速构建表单的同时,很少或完全不需要开发人员介入来更新表单?

现在,表单设计器应运而生。 表单设计器提供可视化界面,还可以拖动非专家开发人员,以便您可以一眼创建业务所需的表单。

窗体设计器的样式目前由许多开源窗体设计器实现,在UI上也相似,设计器的结构与设计软件的布局相似。 表单设计者通常是左中右三层布局:

左侧是控件列表,其中列出了设计器支持的窗体控件。 中间部分是画布,左边的控件可以直接拖动到画布上,支持控件的顺序调整、复制等操作; 右侧是表单域的放置区域,在画布上选择域。 右侧显示此字段的所有属性,用户可以在其中配置字段的标题、说明、验证规则等。

原理分析

表单设计器的输出是描述表单字段的JSON架构,表单设计完成后,JSON架构直接存储在后端。 发布表单后,前端将根据JSON架构渲染表单。 由于表单中所有字段的信息都存储在架构中,因此每次更新表单时架构内容都会发生更改,而不需要传统的编译过程。 使用表单设计器,不仅可以释放频繁响应业务更改的开发人员,还可以大大提高非专业开发人员的生产力,降低交流成本。

JSON Schema是表单设计器和表单渲染组件之间通信的语言。 要了解表单设计器的核心,首先需要了解架构。 在实际项目中,JSON方案通常很复杂,所以不在此展开。 本文的主题是表单设计器的实现原理,重点介绍如何提供用户快速生成模式的可视界面。 架构的详细格式将在下一篇文章中介绍。 这里首先提供简化版本的定义。

接口方案{ fields : recordfieldkey,field方案; }接口facefieldschema { title :字符串; type : ' string '|' object '|' array '|' number '|' boolean '; 组件:字符串; 组件props : { [ name : string ] : any; (; }

众所周知,窗体由多个输入控件组成。 input控件包含多种格式,包括文本、数字、单选和多选。 架构中除了描述字段支持哪种类型的input之外,还必须描述控件的行为,例如是否限制输入长度,是否必须。 有了这些说明,表单呈现组件可以根据架构呈现预期的表单。

在上述类型定义中:

component指示字段将由哪个input组件渲染。 componentProps表示在组件中传递的` props ',用于控制组件的动作; ` ype `表示组件希望接受并返回的数据类型; ` FieldKey '是表格中字段的唯一标识符,用户不透露; “title”表示与表单中的字段相对应的标签,用户可以读取该标签的值。 表单设计器的作用是从零开始,或者使用现有JSON架构作为输入添加、删除和更新架构中的字段,然后打印架构。 将窗体设计器视为一个整体,其功能可以如下图所示。

此外,可以将上图划分为控件级别,使用单个字段的配置作为输入,并在更新后重新打印此字段的配置。

从总体上看,窗体是每个控件的操作组合,组合结果是完整的Json架构。

为了允许修改表单域,在表单设计器中提供了字段配置区域。 无论架构的特定格式如何,用户都可以直观地定义字段属性。 表单设计器将配置值转换为架构,将架构转换为配置值,并前后显示配置的页面表单。

说明

配置区域实际上也是表单,每种类型的控件都有自己的配置表单。

要实现这些功能,每个控件必须实现“toConfig”和“toSchema”两种方法。 这里用一个表达式表示` configValue '用于回显配置表单的这两种方法和方案之间的关系。

FieldSchema=toConfig=con

figValue => toSchema => FieldSchema


厘清了上述思路之后,我们再回到表单设计器的 UI 呈现上来。

左侧是设计器支持的控件列表,根据上面的分析,每个控件都需要提供控件名称、配置表单、toConfig 和 toSchema 这四个接口的实现。中间的 canvas 负责展示 Schema 中的控件,同时需要处理用户的点击和拖拽事件。当用户点击 canvas 中的某个字段时,右侧的配置区域需要找到对应的配置表单并渲染出来。

总结

以上是表单设计器最核心的架构实现,还有一些实现上需要考虑的细节,如表单 Schema 定义解析等将在后续的文章中逐步阐述,请大家持续关注。

全象云低代码平台的表单设计器是基于 [Formily]实现的。Formily 的灵活扩展能力和为业务而生的特性让我们钦佩,感谢 Formily 团队的贡献,希望我们后面也能为 Formily 贡献代码。


 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。