动态或静态创建表单?

Create forms dynamically or statically?

我有一个特定的网页需要大约 6 种不同的表格;其中一些是多达 15 行的唯一标签和输入。

我制作了一个 JavaScript 库,它可以接受一个大对象并输出一个表单。基本上,它接受一个无穷无尽的对象,如:

var myForm = {
   row1 : {
       label : { text : 'First Field'}
       input : {
            type : 'dropdown',
            values : { 1 : 'Enabled', 0 : 'Disabled'}
       } 
   }
}

..等等。

然后我意识到,也许最好在 HTML 中输入每个表格,将其放在 HTML 页面上并在需要时隐藏它(它们被实现为覆盖)。但是我认为这可能被视为不好的做法,因为:

1) 页面正在进行长轮询,每 5 秒更新一次,因此会重绘页面。它会重绘甚至隐藏的东西,比如表格吗?

2) 我的 HTML 文件会很大

我的问题是:我应该简单地在 HTML 中为一个页面存储大量表单,还是应该动态创建它们。动态创建它们仍然意味着我的 javascript 文件中会有大对象。将它们静态嵌入 HTML 页面意味着它们可能(不确定)在每次重绘页面时都被重绘。

如您的评论所述,您已经在使用 ajax 而不是整页加载来更新页面。

当您更改 dom 时,我不会担心页面重绘。可以(在浏览器内部)缓存很多东西,并且没有添加 request/response 处理。更改 dom 没问题 - 执行整页请求很慢。

您的动态解决方案可能比将其作为静态字段添加到 html 页面并使用 javascript 到 show/hide 稍微复杂一些,但我不担心速度问题。如果您已经实施了动态版本(听起来像您实施的), 速度如何?

如果我是你,我会这样问自己:

  1. 哪种解决方案更容易理解(对于其他人,或多年后的你自己)
  2. 哪种解决方案更易于维护? (可能会有什么样的变化?)
  3. 我踢自己添加这个:你如何最快完成任务? (谁为此买单,您已经实施了什么解决方案)。

值得一提的是,动态版本可以通过后端等方式为 add/remove/change 字段创建接口。如果这是可取的,你可能想要那样摇摆。但是不要设计你还不需要的东西,这会导致:

YAGNI and KISS