为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

为什么返回生成的HTML而不是JSON是一种不好的做法?或者是吗?使用JQuery或任何其他类似的框架从您的自定义URL / Web服务加载HTML内容非常容易。我多次使用这种方法,直到现在,发现性能令人满意。但是所有的书籍,所有专家都试图让我使用JSON而不是生成HTML。它是如何比HTML更优越的?它快得多吗?它在服务器上的负载是否很小?另一方面,我有一些使用生成的HTML的原因。它是简单的标记,通常与JSON一样紧凑或实际上更紧凑。它不容易出错,因为你得到的只是标记,没有代码。在大多数情况下编程会更快,因为您不必为客户端单独编写代码。你是哪一方,为什么?
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

我实际上是双方都有点:

  • 当我在javascript方面需要的是数据时,我使用JSON

  • 当我在javascript方面需要的是我不会做任何计算的演示时,我通常使用HTML

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

  • 在JS中重新构建页面的一部分是非常困难的

  • 您可能已经在服务器端有一些模板引擎,它首先用于生成页面...为什么不重用它?

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

  • 在服务器上,生成一部分HTML或一些JSON可能不会产生太大的影响

  • 关于通过网络的东西的大小:好吧,你可能不会使用数百KB的数据/ html ...在你传输的任何东西上使用gzip会产生最大的不同(不是在HTML之间选择)和JSON)

  • 但是,可以考虑的一件事是,客户端需要从JSON数据中重新创建HTML (或DOM结构)的资源...将其与将部分HTML推入页面进行比较; - )

最后,有一点非常重要:

  • 你需要多长时间来开发一个新的系统,将JS作为HTML注入页面所需的JSON +代码发送数据?

  • 返回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子串方法会起作用;-)


查看完整回答
反对 回复 2019-08-29
?
SMILET

TA贡献1796条经验 获得超4个赞

好,

我是那些喜欢以这种方式分离事物的少数人之一: - 服务器负责提供数据(模型); - 客户负责显示(查看)和操纵数据(模型);

因此,服务器应该专注于交付模型(在这种情况下,JSON更好)。这样您就可以获得灵活的方法。如果要更改模型的视图,可以让服务器发送相同的数据,只需更改将数据更改为视图的客户端javascript组件即可。想象一下,您有一台服务器向移动设备和桌面应用程序提供数据。

此外,这种方法提高了工作效率,因为服务器和客户端代码可以同时构建,永远不会失去焦点,这是当你从js切换到PHP / JAVA /等时会发生的事情。

一般来说,我认为大多数人更喜欢在服务器端尽可能多地做,因为他们不掌握js,所以他们试图尽可能地避免它。

基本上,我和那些正在研究Angular的人有同样的看法。在我看来,这是Web应用程序的未来。


查看完整回答
反对 回复 2019-08-29
  • 3 回答
  • 0 关注
  • 917 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信