【发布时间】:2011-08-06 18:40:16
【问题描述】:
我想加载一个包含现有数据(cmets 或小部件列表等)的 HTML 页面,然后使用 Javascript 以与与页面交互的用户输入的格式相同的格式呈现其他数据。
- 我想使用一个存储在 JavaScript 对象中的模型来表示页面上的现有数据以及来自用户输入的新数据,然后观察模型以在 DOM 发生变化时更新它。
- 我想渲染 JS 模板以快速显示用户输入的数据,而无需再次访问服务器。
我想避免编写呈现相同数据的服务器端和 JavaScript 模板。
为了解决构建初始模型的第一个问题,选项似乎按优先顺序排列:
- 使用 JavaScript 提取以 HTML 呈现的数据以构建初始模型,或
- 将 JSON 直接渲染到 DOM 并从中构建 JS 对象,或者
- 页面加载为 ajax 调用后再次访问服务器以获取 JSON 格式的数据
为了避免让服务器端和客户端模板显示相同的内容:
- 使用 Pure 之类的东西从 DOM 构建模板,或者
- 仅使用 JS 模板并使用上述第二个选项之一来初始呈现页面(从呈现到 DOM 的 JSON 填充它们或进行 ajax 调用以获取 JSON 来填充它们)。
- 使用可在服务器和客户端上运行的模板系统。
我觉得这些解决方案都不是特别优雅,我很好奇还有哪些我可能没有想到的模式,或者是否有通用的解决方案。
我的环境是 Rails 3,但问题适用于任何服务器 -> HTML/JS 设置。我可以看到使用 Node.js 之类的东西可能会更容易一些,但我主要对适用于 Rails 的解决方案感兴趣。
【问题讨论】:
标签: javascript model-view-controller templates mvvm