我只是想知道 AJAX 响应的“理想”输出格式是什么?使用某些客户端 JavaScript 模板引擎将纯数据(JSON、XML)渲染到页面中?还是“按原样”呈现到页面中的 HTML 片段?
你的偏好是什么,为什么?
我只是想知道 AJAX 响应的“理想”输出格式是什么?使用某些客户端 JavaScript 模板引擎将纯数据(JSON、XML)渲染到页面中?还是“按原样”呈现到页面中的 HTML 片段?
你的偏好是什么,为什么?
在大多数情况下,您只需要发送 JSON(或适当的 XML,我以 JSON 为例)。
话虽如此,我真的不喜欢从 JavaScript 生成 HTML。这是一场维护噩梦,我根本不喜欢将两者混为一谈。那么,如果您发送的只是 JSON,如何避免在 JavaScript 中生成 HTML?如果你正在处理 Person(s) 对象,当你第一次渲染页面时,你会这样渲染它:
...
<div class="person display">
<div class="name"></div>
<div class="status"></div>
<div class="score"></div>
</div>
...
当您通过 AJAX 获取人员数据时,只需填充上述 DOM 结构。
如果您希望显示多个 Person 的信息,则不应直接填充 DOM 结构,您应该克隆它然后填充它。这样您的模板将保持完整,您可以重复使用它。
这在很大程度上取决于将要使用的数据:
对于将在您的应用程序和外部使用的数据,永远不要使用 HTML:难以解析,难以使其适合其他结构。
如果它是关于少量数据的,比如为小部件更新的一些数据,请使用 JSON,因为它快速且易于使用。
如果它可以是大量数据,例如搜索查询的结果,请使用 XML,因为它对于大数据分析更加灵活。
不要费心使用纯 XML。无论如何,批量分析总是在输出之前完成。
大多数时候,您会想要使用 JSON,因为它比 HTML 更灵活,而且部署起来相当快。
如果您知道以后不需要处理数据并且布局很复杂,请使用 HTML。在服务器端编写复杂的 HTML 比使用 DOM 容易得多。
如果您要返回大量 HTML,最好将它们放在服务器端并简单地将其加载到页面中。
如果您要返回类似一堆键值对来更新 a <select>
with 或类似的东西,最好将其作为 JSON 返回并在客户端构建 HTML。
对我来说没有“理想”的方式。当我需要分页并且我已经有了模板客户端时,使用纯 JSON 和 jTemplates 使用 jQuery 进行客户端渲染。
当我必须实现对服务器的简单调用时也使用 JSON:自动完成、就地编辑、保存草稿等。
当我需要一个分支新页面片段时,我使用 HTML 渲染:加载模板、向页面添加窗格、渲染自定义控件。
顺便说一句,我什么时候可以更喜欢 json,因为我们可以切换到客户端对象操作,而不仅仅是拥有一个“更新面板”。
这取决于情况,我更喜欢向客户端发送数据,并使用客户端框架更新页面,因为我有一个可用的。如果我是自己写的,而且代码片段足够小,我可能会在服务器端做,保持 js 尽可能苗条。