Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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 图形数据应该在后端还是前端生成?_Javascript_Php_Graph_Frontend_Backend - Fatal编程技术网

Javascript 图形数据应该在后端还是前端生成?

Javascript 图形数据应该在后端还是前端生成?,javascript,php,graph,frontend,backend,Javascript,Php,Graph,Frontend,Backend,我最近在办公室里进行了一次讨论,讨论是提供通过内部后端api准备的图形数据,还是提供通用数据并在前端解析为图形格式。以下是我从团队收集的基本笔记: 前端优点: 数据以通用格式从后端传输 因为数据是通用形式的,所以可以使用任何图形呈现前端。只要编写了解析器方法 前端缺点: 前端需要包含某种解析器,以便将通用数据转换为实际的图形数据 后端优点: 数据可以以正确的格式提供,无需前端解析 后端Cons 锁定我们可以使用的图形库 这似乎是一个非此即彼的场景,但我想问这个问题以获得任何其他可

我最近在办公室里进行了一次讨论,讨论是提供通过内部后端api准备的图形数据,还是提供通用数据并在前端解析为图形格式。以下是我从团队收集的基本笔记:

前端优点:

  • 数据以通用格式从后端传输
  • 因为数据是通用形式的,所以可以使用任何图形呈现前端。只要编写了解析器方法
前端缺点:

  • 前端需要包含某种解析器,以便将通用数据转换为实际的图形数据
后端优点:

  • 数据可以以正确的格式提供,无需前端解析
后端Cons

  • 锁定我们可以使用的图形库
这似乎是一个非此即彼的场景,但我想问这个问题以获得任何其他可能的见解


后端指的是RESTAPI,前端指的是web应用程序(Javascript)。

如果后端能够进行转换,那么理想情况下,客户端可以选择获取原始或格式化的输出。两全其美?

要在列表中添加更多内容,您可以考虑以下几点

  • 在后端序列化和操作数据会使用更多的RAM,因为所有数据都是首先加载到内存中的
  • 为了保持后端的标准化和结构化,您应该只通过RESTAPI访问资源。在如此大的范围内操作数据对您的API没有实际价值
  • 使用前端操作数据将使用更多的本机资源,从而在创建“图形”数据时节省服务器的大量处理和ram。图形将以本机速度渲染,而不是挂在服务器上首先构建它
  • 除非你编写的应用程序经常面临被劫持/黑客攻击的威胁(比如银行)。你真的不需要担心其他人写他们自己版本的图表。它花费了太多的时间,并不是你需要考虑的对业务/应用的一个可行的威胁。
希望我能帮点忙。
PS

我建议只使用后端RESTAPI作为数据库/资源公开,而不使用太多的应用程序逻辑

您的JS应用程序应该处理所有数据操作,以构建它试图传递的任何信息。

  • 昂贵的计算或任何类型的图形计算都应该在后端进行。即使后端最终消耗了更多内存或cpu,您也可以通过基于cpu、响应时间、内存等调整/自动调整后端服务器的大小来控制这一点
  • 如果前端进行计算,并假设它有数年或数月的数据点,则处理将在客户端的浏览器应用程序上进行,而您的应用程序也无法对其进行控制。对于同时使用多个浏览器选项卡或应用程序的用户来说,这种情况尤其明显
  • 如果所有计算都在后端完成,则调试或定位问题会更容易

我想你已经自己写了答案,你有更多的前端优点。我目前正在使用相同的方法。但是,我担心服务器必须发送大量通用数据行的情况。在这种情况下,太多的信息被发送到前端。这意味着客户端需要下载更多数据。相反,如果我们在后端处理数据,它将只发送几个字节,而不是向前端发送10万行。有时我想知道我向前端发送通用数据的决定是否正确。在一个请求中发送大量数据似乎是一个基础设施问题,而不是逻辑问题。只有当您聚合一天只请求几次的内容时,才需要在服务器上处理大量数据。对于更频繁的内容,您不希望在处理请求时将进程锁定在聚合中。如果你发送了大量的数据到你的前端,考虑流它,而不是聚合它。什亚马尔帕里赫