Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅使用json对象进行通信的WebApp?_Javascript_Jquery_Css_Json_Html - Fatal编程技术网

Javascript 仅使用json对象进行通信的WebApp?

Javascript 仅使用json对象进行通信的WebApp?,javascript,jquery,css,json,html,Javascript,Jquery,Css,Json,Html,大家好,我一直在思考目前大多数网络应用程序是如何工作的。例如,如果后端是用java/php/python编写的,那么您可能会看到后端正在“回显/打印”准备好的html到浏览器,对吧 对于几乎完全使用ajax的web应用程序,有没有理由不使用html进行通信,例如,只使用服务器和客户端之间传递的JSON对象,而不是在脚本/应用程序后端“打印或回显”html,我们只回显JSON字符串,ajax获取它并将JSON字符串转换为包含所有属性/数组等的对象 当然,这样我们可以发送更少的字符,没有html标记

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

对于几乎完全使用ajax的web应用程序,有没有理由不使用html进行通信,例如,只使用服务器和客户端之间传递的JSON对象,而不是在脚本/应用程序后端“打印或回显”html,我们只回显JSON字符串,ajax获取它并将JSON字符串转换为包含所有属性/数组等的对象

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

也许人们已经这样做了,但我真的没见过很多应用程序是这样工作的吗? 原因是我想做这件事是因为我比目前更想分离表示层和逻辑层,所以我不想在java/php中“回显”html,而是“回显”json对象,javascript负责整个表示层,这有什么根本性的错误吗,你的看法是什么


再次感谢Stackoverflow。

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

我已经做了一些,它有它的优点


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

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


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

现在很多Web应用程序都使用这种方法,如gmail和其他大型应用程序就连facebook也这么认为 这种方法的主要优点是用户不需要刷新所有页面,就可以得到我们想要给他看的内容或他想要的内容。
但是我们必须同时制作ajax和普通页面刷新这两个版本,如果用户刷新页面会怎么样。

我们可以使用jquery模板生成html,也可以使用谷歌的closer,它被gmail和其他谷歌产品使用

是的,我想对于大的结果集,DOM可能会慢下来,但是当你说大的结果集时,你说的是我想象中的某个巨大的表?你认为什么是“大”结果集?感谢上帝,我们的用户都有Firefox,所以很多麻烦都过去了;-)您将始终拥有比服务器更多的浏览器。;)我发现正好相反。如果写得好,浏览器在将数据(json/xml)转换和呈现为html时通常比网络在传输生成的html时更快。@Chad-如果浏览器已经从运行的10个其他选项卡加载了一些内容,则情况就不是这样了:(我也是这样做的。好吧,那么我有一个后续问题;-)那么假设您这样做,然后我想象您使用javascript、div等创建DOM节点。。为了避免javascript代码与html代码混淆,您应该做些什么?您是否有创建div等的特定函数,或者在单独的JS文档中预定义了一些html代码?请看jQuery模板。