将前端与同构Ruby on Rails Web应用程序分开。

时间:2016-11-14 10:48:18

标签: ruby-on-rails reactjs web-applications react-rails

我们的Web应用程序完全基于Ruby on Rails构建。前端与后端紧密耦合。我们正处于一个阶段,我们希望逐渐开始将我们的前端与后端分开。我们希望在UI部分采用ReactJS方式,我们希望遵循瀑布模型进行过渡。

我们有两种选择:

  1. 使用名为react-rails的gem,并在React中构建新组件。慢慢开始将现有组件转换为React组件。一旦我们将所有组件转换为React组件,取出每个React组件,分离完整的前端并将其托管在其他地方。

  2. 在其他地方主持ReactJS。逐渐开始将每个组件转换为React组件,将其移动到新的托管位置并从Rails中删除它们。唯一的问题是,React组件将位于与Rails不同的位置。在应用程序中导航时,可以感觉导航到不同的网站。

  3. 请分享您的经验并指导我们以何种方式进行。我们的最终目标是在Ract中使用ReactJS和后端的完整前端。它们通过API进行通信,完全消除了前端和后端之间的耦合。

    由于

2 个答案:

答案 0 :(得分:1)

仅当您计划在服务器渲染混合中保留rails时才使用#1(不推荐)。如果没有,则#2是您从头开始使用完整的js解决方案的最佳选择。如果您在需要新视图时创建一个解耦的反应组件库和现有rails应用程序的渲染管道,它就不必感觉像是一个不同的站点。然后,当您转换了所有视图组件后,您可以完成应用程序逻辑并完全切换。

另一种选择是你甚至不需要单独托管新的反应组件,反应组件可以经历一个单独的构建周期,然后缓存在现有服务器上并根据需要从rails中呈现。

答案 1 :(得分:1)

我实际上不建议远离以Ruby为中心的系统。您可以使用http://ruby-hyperloop.io在Ruby中构建您的react.js组件。 Hyperloop包含用于反应的Ruby DSL(HyperReact)和HyperMesh,它可以让您完全访问React组件中的ActiveRecord模型。

您将在整个过程中处理一种语言的巨大优势,您不需要构建API只是为了在客户端访问您的数据,您可以使用现有的rails工具链,包括测试工具。

有一个庞大的React.js组件库,可以与HyperReact进行良好的互操作。

如果出于某种原因你认为最好走JS路线那么我会推荐react-rails。它可以工作,得到很好的支持,并处理预渲染(这是一个非常重要的概念。)您也可以轻松地与NPM和webpack集成。