javascript - 为什么返回生成的 HTML 而不是 JSON 是一种不好的做法?或者是吗?

使用 JQuery 或任何其他类似框架从您的自定义 URL/Web 服务加载 HTML 内容非常容易。这种方法我已经用过很多次了,到现在都觉得效果很满意。

但是所有的书,所有的专家都试图让我使用 JSON 而不是生成的 HTML。它比 HTML 优越得多?

是不是快很多?
它在服务器上的负载是否要小得多?

另一方面,我有一些理由使用生成的 HTML。

  1. 这是一种简单的标记,通常与 JSON 一样紧凑或实际上更紧凑。
  2. 它不太容易出错,因为您得到的只是标记,没有代码。
  3. 在大多数情况下编程会更快,因为您不必为客户端单独编写代码。

你站在哪一边,为什么?

最佳答案

其实我有点两面派:

  • 当我在 javascript 端需要的是 data 时,我使用 JSON
  • 当我在javascript方面需要的是presentation,我不会做任何计算,我一般使用HTML

使用 HTML 的主要优点是当您想用 Ajax 请求返回的内容替换页面的整个部分时:

  • 在 JS 中重新构建页面的一部分(相当)困难
  • 您可能已经在服务器端有一些模板引擎,它最初用于生成页面...为什么不重用它?

我通常不会真正考虑事物的“性能”方面,至少在服务器上:

  • 在服务器上,生成部分 HTML 或一些 JSON 可能不会产生太大影响
  • 关于通过网络传输的内容的大小:嗯,您可能不会使用数百 KB 的数据/html...在传输的任何内容上使用 gzip 将会产生最大的不同 (不在 HTML 和 JSON 之间选择)
  • 不过,可以考虑的一件事是,您需要在客户端上从 JSON 数据重新创建 HTML (或 DOM 结构) 的资源...比较一下将部分 HTML 推送到页面中 ;-)

最后,绝对重要的一件事:

  • 您需要多长时间才能开发出一个新系统,该系统将以 JSON 格式发送数据 + JS 将其作为 HTML 注入(inject)页面所需的代码?
  • 返回 HTML 需要多长时间?如果您可以重复使用一些已经存在的服务器端代码,需要多长时间?


并回答另一个答案:如果您需要更新页面的多个部分,仍然存在将所有这些部分发送到一个大字符串中的解决方案/黑客,该字符串将多个 HTML 部分分组,并在 JS 中提取相关部分。

例如,您可以返回一些如下所示的字符串:

<!-- MARKER_BEGIN_PART1 -->
here goes the html
code for part 1
<!-- MARKER_END_PART1 -->
<!-- MARKER_BEGIN_PART2 -->
here goes the html
code for part 2
<!-- MARKER_END_PART2 -->
<!-- MARKER_BEGIN_PART3 -->
here goes the json data
that will be used to build part 3
from the JS code
<!-- MARKER_END_PART3 -->

这看起来不太好,但它确实很有用(我已经用过很多次了,主要是当 HTML 数据太大而无法封装到 JSON 中时):你正在为需要演示的页面部分发送 HTML,而您正在为需要数据的情况发送 JSON...

...为了提取这些,我想 JS 子字符串方法可以解决问题;-)

https://stackoverflow.com/questions/1284381/

相关文章:

javascript - 加载本地 JSON 文件

json - PostgreSQL引入JSONB的解释

c# - 如何在 JSON.NET 中实现自定义 JsonConverter?

java - Gson:直接将String转换为JsonObject(无POJO)

angularjs - 如何在 AngularJs 中对字典使用 ng-repeat?

java - 如何遍历 JSONObject?

java - 仅在序列化期间使用@JsonIgnore,而不是反序列化

javascript - 什么是 $$hashKey 添加到我的 JSON.stringify 结果

javascript - 如何将 json POST 数据作为对象传递给 Web API 方法?

javascript - 检查 JSON 对象中是否存在键