实际上,我有点两边:
- 当我在javascript方面需要的是数据时,我使用JSON
- 当我在javascript方面需要的是我不会进行任何计算的演示时,我通常使用HTML
使用HTML的主要优点是当您想要将页面的整个部分替换为Ajax请求返回的内容时:
- 在JS中重新构建页面的一部分(相当)困难
- 您可能已经在服务器端有一些模板引擎,该引擎最初用于生成页面...为什么不重用它?
我通常不会真正考虑“性能”方面的事情,至少在服务器上:
- 在服务器上,生成一部分HTML或一些JSON可能不会产生太大的区别。
- 关于通过网络的东西的大小:好吧,你可能不使用数百KB的数据/ html...在您要传输的任何内容上使用gzip将产生最大的区别(而不是在HTML和JSON之间进行选择)
- 但是,可以考虑的一件事是,您需要在客户端上使用哪些资源来从JSON数据重新创建HTML(或DOM结构)...将其与将部分HTML推送到页面中进行比较;-)
最后,有一件事绝对重要:
- 开发一个新系统需要多长时间才能将数据作为JSON发送+将JS作为HTML注入页面所需的代码?
- 只返回 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子字符串方法将完成这个技巧,我想;-)