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

Ruby on rails Rails/React.js:如何避免重复计算,ruby-on-rails,reactjs,architecture,structure,dry,Ruby On Rails,Reactjs,Architecture,Structure,Dry,我有一个带有React.js前端的Rails应用程序。 用户可以上传一个包含一些JSON数据的文件,我的应用程序将读取数据,并根据数据以漂亮的图形向用户显示一些统计信息 我还需要一个API,它将接收带有JSON数据的请求,进行相同的计算以获得相同的统计数据,并以请求中指定的格式(比如YAML、JSON或纯文本)将文件返回给用户 问题是,我到底在哪里进行计算 如果我在前端组件的某个地方执行这些操作,那么我必须在后端编写类似的逻辑,以便API可以返回统计数据 另一方面,由于我没有将任何内容保存到数据

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

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

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

如果我在前端组件的某个地方执行这些操作,那么我必须在后端编写类似的逻辑,以便API可以返回统计数据

另一方面,由于我没有将任何内容保存到数据库中,因此创建一个进行计算的模型是没有意义的


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

因为需要公开原始API,在Rails应用程序的服务器端拥有逻辑是不可避免的。从您提供的细节来看,您的主要考虑可能是避免重复业务逻辑。这只剩下一个解决方案:将计算代码放在Rails后端,并通过API公开它

事实上,您没有将任何内容保存到数据库中是很好的。服务器通常负责执行操作而不存储任何类型的持久状态。如果不是这样的话,我们将依靠客户端代码在各地执行大量计算——这意味着人们的本地机器将试图通过浏览器来获取大数据等信息;非常不切实际

在服务器端构建API后,从React应用程序中利用这些API端点。流可能看起来像:

  • 用户点击上传文件
  • React应用程序获取文件,读取其中的数据
  • React应用程序获取相关数据,调用Rails应用程序上的API端点来执行计算
  • React应用程序接收响应,并将这些漂亮的图表放在一起

  • 太好了,谢谢。在这种情况下,你认为在Rails应用程序中,特别是在我放置实际函数进行计算的地方,会有所不同吗?在控制器中?或者我需要制作一个模型,比如计算器,来实现这些功能吗?我对Rails本身只有一点经验,但从MVC的角度来看,您需要将您的计算(业务逻辑)保存在一个模型中。您的“控制器”将处理React应用程序Rails模型的通信方面(即RESTAPI端点)。