开始使用 React 和 Rails
Getting started with React and Rails
我开始了一个新项目,我想在其中使用 React 和 Rails。这个项目很小,需要一些基本的交互 UI,因此需要 React。据我所知,有两种方法可以开始使用:
- 使用 react-rails gem 并使用内置视图助手
- 创建 Rails API 和 React/Flux 前端应用程序
不过我有几个问题。排名不分先后:
- React-rails 似乎是更简单的解决方案,但我会面临哪些缺点?
- 我来自 Rails 和 Ember 背景,所以 Rails API + React FE 解决方案对我来说在架构上很有意义。但是对于 react-rails gem 我对应该如何完成某些事情感到困惑。首先,我如何处理路由?我想我将无法访问任何反应路线助手,并且需要将路径作为道具传递到反应组件中?
提前致谢!
这取决于您的服务器以及您的团队的工作量。如果您有很多业务逻辑要保留在 Rails 中,那么您可能希望将该逻辑 运行 放在专用的 Rails 服务器上并公开为 API。
然后您可以拥有一个 NodeJS 服务器,它除了从 API 获取数据并呈现 React 以发送给用户外什么都不做。 React 和 rails 之间的唯一交互是通过 API 作为 JSON。这个基本设置可以很好地扩展,并且是一个非常简单的心智模型。
如果项目变大,这意味着您可以让仅 JS 开发人员仅在 JS 中工作,而 Rails 开发人员仅在 Rails 中工作。另外,如果您想稍后离开 Rails 或 React,那里不会增加复杂性。
或
如果你所有的开发人员都是 React+Rails 并且项目对于多个服务器来说有点小,那么我认为使用 react-rails 来提供你的页面是一个很好的解决方案。
对于一个小项目 React-Rails, https://github.com/reactjs/react-rails, 很棒我去年在 2 个网站上的生产中使用了它,每个月有大约十万访问者,但我没有有任何问题。
也就是说,如果您想使用 Redux、React-Router 或 Flux,请不要使用 React-Rails 请走 API 路线。
我的规则是,如果你只是使用 React 组件,那么使用 React-Rails。
如果您正在开发 Redux、Flux 应用程序,那么只需制作一个前端应用程序即可。
我开始了一个新项目,我想在其中使用 React 和 Rails。这个项目很小,需要一些基本的交互 UI,因此需要 React。据我所知,有两种方法可以开始使用:
- 使用 react-rails gem 并使用内置视图助手
- 创建 Rails API 和 React/Flux 前端应用程序
不过我有几个问题。排名不分先后:
- React-rails 似乎是更简单的解决方案,但我会面临哪些缺点?
- 我来自 Rails 和 Ember 背景,所以 Rails API + React FE 解决方案对我来说在架构上很有意义。但是对于 react-rails gem 我对应该如何完成某些事情感到困惑。首先,我如何处理路由?我想我将无法访问任何反应路线助手,并且需要将路径作为道具传递到反应组件中?
提前致谢!
这取决于您的服务器以及您的团队的工作量。如果您有很多业务逻辑要保留在 Rails 中,那么您可能希望将该逻辑 运行 放在专用的 Rails 服务器上并公开为 API。
然后您可以拥有一个 NodeJS 服务器,它除了从 API 获取数据并呈现 React 以发送给用户外什么都不做。 React 和 rails 之间的唯一交互是通过 API 作为 JSON。这个基本设置可以很好地扩展,并且是一个非常简单的心智模型。
如果项目变大,这意味着您可以让仅 JS 开发人员仅在 JS 中工作,而 Rails 开发人员仅在 Rails 中工作。另外,如果您想稍后离开 Rails 或 React,那里不会增加复杂性。
或
如果你所有的开发人员都是 React+Rails 并且项目对于多个服务器来说有点小,那么我认为使用 react-rails 来提供你的页面是一个很好的解决方案。
对于一个小项目 React-Rails, https://github.com/reactjs/react-rails, 很棒我去年在 2 个网站上的生产中使用了它,每个月有大约十万访问者,但我没有有任何问题。
也就是说,如果您想使用 Redux、React-Router 或 Flux,请不要使用 React-Rails 请走 API 路线。
我的规则是,如果你只是使用 React 组件,那么使用 React-Rails。
如果您正在开发 Redux、Flux 应用程序,那么只需制作一个前端应用程序即可。