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

使用JQuery或任何其他类似框架从您的自定义URL / Web服务加载HTML内容非常简单。 我已经多次使用这种方法,直到现在发现性能令人满意。

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

它速度非常快吗?
它在服务器上的负载是否非常低?

另一方面,我有一些使用生成的HTML的原因。

  • 它是简单的标记,并且通常与JSON一样紧凑或实际上更紧凑。
  • 它不太容易出错,因为你得到的只是标记,而没有代码。
  • 在大多数情况下编程会更快,因为您不必为客户端单独编写代码。
  • 你在哪边?为什么?


    实际上,我对双方都有点意见:

  • 当我在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子字符串方法将做的伎俩,我想;-)


    我主要同意这里提出的意见。 我只是想将它们总结为:

  • 如果您最终解析客户端以对其进行一些计算,那么发送HTML是一种不好的做法。

  • 发送JSON是一个不好的做法,如果你最终做的只是将它合并到页面的DOM树中。


  • 好,

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

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

    此外,这种方法提高了生产力,因为服务器和客户端代码可以同时构建,而不会失去焦点,这是从js切换到PHP / JAVA等时会发生的情况。

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

    基本上,我和那些正在从事Angular的人有相同的观点。 在我看来,这是网络应用程序的未来。

    链接地址: http://www.djcxy.com/p/1301.html

    上一篇: Why is it a bad practice to return generated HTML instead of JSON? Or is it?

    下一篇: What is JSON and why would I use it?