【问题标题】:Separating front end from the isomorphic Ruby on Rails web application.将前端与同构的 Ruby on Rails Web 应用程序分开。
【发布时间】:2017-03-27 23:34:39
【问题描述】:

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

我们有两种选择:

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

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

请分享您的经验并指导我们应该采取哪种方式。我们的最终目标是在 ReactJS 中拥有完整的前端,在 Rails 中拥有后端。它们通过 API 进行通信,完全消除了前端和后端之间的耦合。

谢谢

【问题讨论】:

  • 我很想知道这对你有什么影响。我们正在尝试在我目前工作的地方做同样的事情,并考虑采用类似于第二种方法的方法。
  • 值得指出的是,使用 Rails v5.1 和 webpacker gem(2017 年发布),将 React 集成到(新)Rails 应用程序中要容易得多。 medium.com/react-on-rails/…

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我实际上不建议离开以 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 集成。

    【讨论】:

    • 值得指出的是,使用 Rails v5.1 和 webpacker gem(2017 年发布),将 React 集成到(新)Rails 应用程序中要容易得多。 medium.com/react-on-rails/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    相关资源
    最近更新 更多