Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 通过api调用Json与HTML?_Javascript_Html_Ajax_Json_Api - Fatal编程技术网

Javascript 通过api调用Json与HTML?

Javascript 通过api调用Json与HTML?,javascript,html,ajax,json,api,Javascript,Html,Ajax,Json,Api,请注意;正如我在问题的第五段中清楚解释的那样,这并不是其他类似问题的重复。此外,它不是基于意见的。我只是想问一下这两种做事方式的利弊,特别是为什么Stackoverflow会这样做。 对于我的网站,我正在构建一个通知,类似于它在顶部Stackoverflow上的实现方式;单击通知图标时,将显示一个下拉列表,其中包含相关通知 我目前编写系统的方式是api调用返回包含通知的json对象列表,然后在浏览器中用javascript构建html。但是当我查看SO所做的网络调用时,我发现这里的api调用只是

请注意;正如我在问题的第五段中清楚解释的那样,这并不是其他类似问题的重复。此外,它不是基于意见的。我只是想问一下这两种做事方式的利弊,特别是为什么Stackoverflow会这样做。

对于我的网站,我正在构建一个通知,类似于它在顶部Stackoverflow上的实现方式;单击通知图标时,将显示一个下拉列表,其中包含相关通知

我目前编写系统的方式是api调用返回包含通知的json对象列表,然后在浏览器中用javascript构建html。但是当我查看SO所做的网络调用时,我发现这里的api调用只是返回html,然后粘贴到下拉列表中

我现在想知道;为什么会这样呢?在我看来,只提供json格式的数据,而不是所有围绕它的html格式,效率更高

我退房了:这意味着第三种选择;某种模板系统,但对于我想要插入的简单html来说,这有点太多了。所以我真的不想考虑这个选项。专门讨论性能差异,我也不太关心(可维护性和简单性对我来说比这些差异更重要)


所以我的问题是,;在api调用中提供所有html还是只提供json更有利(无论出于何种原因),原因是什么?

在理想情况下,为了明确区分关注点,web api应该返回一个视图无关的响应。这在几个方面给了你很大的灵活性

  • 您可以使用相同的api为不同的客户端技术提供服务
  • 即使您不使用不同的客户端技术,您也可能希望更改与表示相关的内容,如果您返回特定于视图的内容,则可能需要更改api逻辑以适应响应

这是一个意见,因此不能作为实际答案(问题将很快结束)

JSON,原因是任何有意义的程序都会增长(它们总是会增长),而你对状态的概念性知识会萎缩(它总是如此),这意味着你需要在程序中清楚真相在哪里

当真理在于数据而不是模板或表示时,这种真理的概念最有效。我从经验中学到,任何代码都应该由数据驱动。因此,发送JSON数据以进行单独操作减轻了服务器代码的复杂性,并允许客户端更灵活地以任何方式呈现。当你在6个月内挠头想为什么会有这个bug时,你可以跟踪数据,而不是猜测逻辑在哪里


很好地解释了这一点。

我之所以选择JSON响应,是因为:

  • (+)它是可重用的,您可以在顶部栏和用户配置文件内的下拉列表中显示此通知->一个api服务-许多不同的控件/元素
  • (+)通过http传输的数据更少
  • (-)客户端的计算越来越多,但现在,即使是移动设备也有多核,所以我们谈论的是几毫秒

这是一个非常好的问题!我当然是“json团队”的成员。我坚信在移动设备上,当发送大量数据时,模板化会更快。我认为这将被关闭,因为它是基于意见的。如果数据是固定的时间参考数据,我更喜欢HTML路由。如果下拉列表在时间上发生变化,则使用AJAX-JSON动态请求它是有意义的。这取决于您的JSON数据是否需要在客户端进行大量处理以生成html并更新文档……从服务器发送html,因为服务器在性能上比客户端更强大。使用html,您可以通过布局传输内容,使用JSON、XML等传输数据。使用JSON,您还可以传输方法。API的主要原因是由不同的客户端独立使用,无论每个系统的视觉布局和行为如何。使用HTML很难做到这一点,而使用JSON,您将能够轻松地处理数据并使结果适应您的流。使用Web服务,您还可以实现更高级别的自动化—API提供者和使用者之间的自动化。第二点非常重要……您的应用程序UI将在不更改服务器端代码的情况下关闭以进行扩展。