forms - 这些是设计通用表单创建工具的正确初步想法吗?例如 Google 表单、Typeform
问题描述
最近在我们的团队中,我们正在讨论创建一个通用的表单创建工具,它可以创建具有所需字段(文本框、下拉菜单、单选按钮等)的动态表单。
用户可以添加他想添加的字段(尽管通常不会超过 20 个),可以与其他可以回答问题的用户共享表单,或者它可能只是单个用户的数据输入表单.
我们正在尝试逐步执行此操作,在第一阶段我们将执行以下操作:-
- 用户可以选择创建一个新表单。
- 将存在一些预定义字段,即名称标签和文本框、地址标签和文本区域、带有一些值的状态下拉列表、带有选项的性别单选和其他一些示例字段。
- 新创建的表单上显示的字段只是为了帮助用户了解他可以创建什么样的不同字段。
- 用户可以添加/删除字段,字段类型可以是文本框、文本区域、下拉列表、单选、多选复选框等。
- 完成所需字段后,用户将使用“创建表单”按钮保存表单。整个数据字段类型,如果它是下拉单选,它们的值将保存在数据库中。
- 要访问表单,用户将访问像 form/5 这样的 URL 并填写并保存。
- 我们正在创建一个动态表单并保存表单输入。
我最初的想法
当用户将创建一个新表单时,整个数据将保存为 NoSQL 数据库上的单个 JSON 对象。
当其他或同一用户尝试访问创建的 from 以填充值时,将获取相同的 JSON 对象并创建 HTML,在第 2 阶段,我们可能需要一个 JSON 到 HTML 转换器程序。但现在为了简单起见,我们只需要在客户端从 JSON 生成 HTML。(网络应用程序/移动应用程序)
用户完成输入并保存后。一个新的 JSON 对象将保存在另一个名为 Records 的表中。
我在某处读到,出于报告和分析目的,建议使用关系数据库,所以我想在另一个关系数据库中维护所有数据,复制我们的整个数据库。我不确定这一点,它可能是一个糟糕的设计。
这个应用程序可以取代我们的几个应用程序 - 一些调查应用程序,一些数据表格,因此没有。的记录可以轻松达到数百万。
我期待有关架构/设计和数据库类型的任何建议。
https://www.makeuseof.com/tag/finest-14-google-forms-alternatives-try/
更新 1:我同意 @SerejaBogolubov 的评论,而不是寻找包含类、接口、它们的关系、功能和设计模式的高级/低级设计。这个问题提到了我将在开始时使用的几个步骤和构建块,并想了解各种建议和想法。
解决方案
老实说,我在您的帖子中没有看到任何设计理念。您要保存的位置(以及文本文件的格式或其他任何内容)是次要的。设计是关于接口、功能签名、应用模式等的。
作为建议,您(显然)必须将表单表示与其呈现方式分开。因此FormRepresentation -> Html
出现了类似的东西。那么问题是你将如何构建你的FormRepresentation
?我建议使用(单向)二元操作:FormItem -> FormItem -> FormItem
也称为复合 OOP 模式;在组合的关联性内,您可能会免费获得并行化并避免性能问题,并保持您的签名非常简单而有意义。
所以,那只是一个草图。我会建议您适当地更新您的帖子,以使设计细节(而不是实现细节)变得清晰。
推荐阅读
- ios - MPVolumeView 中的 showRouteButton 已弃用
- android - 从意图开始的系统屏幕无法在方向更改后继续存在
- jquery - 如何将excel文件读入json并发送到CFC进行数据库插入?
- javascript - 如何使用 Vanilla JS 创建和显示自定义组件 100 次
- r - 安装后从库调用函数panelvar的问题
- regex - 基于其他单元格值谷歌表的单元格格式
- mysql - SQL:foreach 查询结果 - 运行查询
- c# - 无法验证 Forge 回调负载签名
- nginx - 通过 Ingress 提供 Kubernetes 集群外部的 HTTP/HTTPS 服务
- javascript - 将 Array.prototype.concat.apply([], [x]) 重构为 [].concat(x) 会引发错误