Rails / React.js:如何避免重复计算

时间:2018-07-21 23:09:48

标签: ruby-on-rails reactjs architecture structure dry

我有一个带有React.js前端的Rails应用程序。 用户可以上载包含一些JSON数据的文件,我的应用程序将读取该数据,并基于该数据以漂亮的图形向用户显示一些统计信息。

我还需要一个API,它将接收带有JSON数据的请求,进行相同的计算以获得相同的统计信息,并以请求中指定的格式(例如YAML或JSON或纯文本)将文件返回给用户)。

问题是,我到底在哪里进行计算?

如果我在组件中某个位置的前端上执行这些操作,则必须在后端上编写类似的逻辑,以便API可以返回这些统计信息。

另一方面,由于我没有将任何内容保存到数据库中,因此创建一个可以完成计算的模型实际上没有任何意义。

不确定正确的结构是什么。

1 个答案:

答案 0 :(得分:1)

由于需要公开原始API,因此在Rails应用程序的服务器端具有逻辑是不可避免的。从您提供的详细信息看来,您的主要考虑因素可能应该是避免重复业务逻辑。这只剩下一种解决方案:将计算代码放入Rails后端,并通过API公开

您没有将任何内容保存到数据库的事实很好。服务器通常负责执行操作,而不存储任何类型的持久状态。如果不是这种情况,我们将依靠客户端代码在整个地方执行大量的计算-这意味着人们的本地计算机将试图通过浏览器来处理大数据之类的东西;非常不切实际。

一旦在服务器端构建了API,就可以在React应用程序中利用这些API端点。流程可能类似于:

  1. 用户点击上传文件
  2. 反应应用获取文件,读取其中的数据
  3. React应用程序获取相关数据,在Rails应用程序上调用API端点以执行计算
  4. React应用获取响应并将这些漂亮的图形放在一起