【问题标题】:WebApp that communicates using only json objects?仅使用 json 对象进行通信的 WebApp?
【发布时间】:2010-10-22 16:37:58
【问题描述】:

大家好,我一直在思考目前大多数网络应用程序是如何工作的。例如,如果后端是用 java/php/python 编写的,您可能会看到后端正在“回显/打印”为浏览器准备好的 html,对吧。

对于几乎完全使用 ajax 工作的 Web 应用程序,是否有理由不简单地在没有 html 的情况下进行通信,例如,仅使用 JSON 对象在服务器和客户端之间来回传递,而不是“打印或回显”在我们的脚本/应用程序后端的 html 中,我们简单地回显 json 字符串,ajax 获取它并将 JSON 字符串转换为具有我们所有属性/数组的对象等等。

当然,这样我们发送的字符更少,没有 html 标签等,在客户端,我们只需使用 jQuery 等框架并在那里创建/格式化我们的 html,而不是在服务器中打印和回显 html脚本?

也许人们已经这样做了,但我还没有真正看到很多应用程序以这种方式工作? 原因是我想这样做是因为我想比现在更多地分离表示层和逻辑层,所以不是在我的 java/php 中“回显”html 我只是“回显”json 对象,而 javascript 需要关心整个表示层,这有什么根本性的问题,你的意见是什么?

再次感谢 Stackoverflow。

【问题讨论】:

  • 我也是这样做的。
  • 好的,那么我有一个后续问题 ;-) 所以说你这样做,然后我想你用 javascript、div 等创建你的 DOM 节点。你不要用什么来弄乱 javascript 代码html代码?您是否有用于创建 div 等的特定功能,或者您在某个单独的 JS 文档中预定义了一些 html 代码?
  • 看看jQuery模板。

标签: javascript jquery css json html


【解决方案1】:

有很多应用程序以这种方式工作(只需使用 JSON 对象通过 AJAX 进行通信,而不是发送标记)。

我做过一些,它有它的优点。

但在某些情况下(例如处理大型结果集时),在服务器端呈现标记并将其发送到浏览器更有意义。这样一来,您就不会依赖 JavaScript/DOM 操作来创建大型文档(根据浏览器的不同,该文档的性能会很差)。

【讨论】:

  • 是的,我想对于大型结果集,DOM 可能会变慢,但是当您说大型结果集时,您是在谈论我想象的一些巨大的表格?您如何看待“大”结果集?感谢上帝,我们的用户都有 Firefox,所以很多头痛都没有了 ;-)
  • 你的浏览器总是比服务器多。 ;)
【解决方案2】:

这是一种非常明智的方法,实际上在我们的一些生产应用程序中使用。

该方法的主要弱点是它增加了浏览器资源的负载,因此可能 - 鉴于浏览器通常已经很慢的 JS 性能 - 导致更糟糕的用户体验,除非表现层机制得到很好的调整.

【讨论】:

  • 我发现相反的情况。如果写得好,浏览器在将数据 (json/xml) 转换和呈现为 html 时通常比网络在传输生成的 html 时更快。
  • @Chad - 如果浏览器已经从其他 10 个正在运行的选项卡加载,则不会:(
【解决方案3】:

现在有很多 webapps 使用这种方法,比如 gmail 和其他大型应用程序,甚至 facebook 这个 这种方法的主要优点是用户不需要刷新所有页面,他可以得到我们想要展示给他或他想要的东西。
但是如果用户刷新页面,我们必须同时制作 ajax 和普通页面刷新的版本。
我们可以使用生成 html 的 jquery 模板,也可以使用 gmail 和其他谷歌产品使用的谷歌关闭器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    相关资源
    最近更新 更多