如何使用 Ruby on Rails 4 后端提供 React 应用程序



我们有一个Ruby on Rails全栈应用程序,我们希望将其转换为ReactJS应用程序,同时保留后端代码,并重做前端代码。

我们的宝石文件如下所示:

ruby '2.2.1'
source 'https://rubygems.org' do
gem 'rails', '4.1.14'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'bootstrap-sass'
gem 'sass-rails', '>= 3.2'
gem 'autoprefixer-rails'
gem 'devise'
gem 'devise_invitable'
gem 'devise-token_authenticatable'
gem 'omniauth'
gem 'omniauth-facebook'
gem 'omniauth-google-oauth2'
gem 'figaro'
gem 'haml-rails'
gem 'mysql2', '~> 0.3.18'
gem 'pundit'
gem 'rolify'
gem 'simple_form'
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
gem 'axlsx', '2.1.0.pre'
gem 'axlsx_rails'
gem 'axlsx_styler'
group :development do
gem 'better_errors'
gem 'binding_of_caller', :platforms => [:mri_21]
gem 'capistrano'
gem 'capistrano-bundler'
gem 'capistrano-rails'
gem 'capistrano-rails-console'
gem 'capistrano-rvm'
gem 'capistrano-pending', :require => false
gem 'capistrano-sidekiq'
gem 'html2haml'
gem 'quiet_assets'
gem 'rails_layout'
gem 'magic_encoding'
gem 'annotate'
end
group :development, :test do
gem 'factory_girl_rails'
gem 'rspec-rails'
gem 'letter_opener'
gem 'bullet'
gem 'timecop'
end
group :test do
gem 'capybara'
gem 'database_cleaner'
gem 'faker'
gem 'launchy'
gem 'selenium-webdriver'
gem 'simplecov'
gem 'codeclimate-test-reporter', '~> 1.0.0'
end
gem 'passenger'
gem 'passenger-rails'
gem 'execjs'
gem 'therubyracer', :platforms => :ruby
gem 'newrelic_rpm'
gem 'redis-rails'
gem 'redis-session-store'
gem 'redis-rack-cache'
gem 'rack-cache'
gem 'actionpack-page_caching'
gem 'lograge'
gem 'rocket_pants'
gem 'active_model_serializers', '~>0.8.1'
gem 'will_paginate'
gem 'delocalize'
gem 'phone'
gem 'paranoia', '~> 2.0'
gem 'bh', '~> 1.0'
gem 'sidekiq'
gem 'counter_culture'
gem 'rollbar'
gem 'oj', '~> 2.12.14'
gem 'sidetiq'
gem 'enum_help'
gem 'sinatra', '>= 1.3.0', :require => nil
gem 'awesome_print', require: 'ap'
gem 'ngannotate-rails'
end
source 'https://rails-assets.org' do
gem 'rails-assets-angular', '1.3.12'
gem 'rails-assets-leaflet'
gem 'rails-assets-angular-animate'
gem 'rails-assets-angular-cookies'
gem 'rails-assets-angular-resource'
gem 'rails-assets-angular-sanitize'
gem 'rails-assets-angular-touch'
gem 'rails-assets-angular-route'
gem 'rails-assets-angular-moment'
gem 'rails-assets-angular-ui-date'
gem 'rails-assets-angular-xeditable'
gem 'rails-assets-components-font-awesome', '4.2.0'
gem 'rails-assets-angular-loading-bar'
gem 'rails-assets-angular-confirm-click'
gem 'rails-assets-angular-strap'
gem 'rails-assets-angular-dialog-service'
gem 'rails-assets-angular-bootstrap'
gem 'rails-assets-angular-translate'
gem 'rails-assets-trNgGrid'
gem 'rails-assets-accounting.js'
gem 'rails-assets-angular-ui-notification'
end

这是现实的尝试吗?我不熟悉Ruby on Rails,我们团队中的任何人都不熟悉。引擎盖下似乎有很多逻辑,我想知道其中一些逻辑是否会阻止它 100% 工作。

您刚刚分享了 Gem 文件,但没有分享此应用程序的开发方式,因此信息不足以为您提供准确的响应。但通常,遵循两种不同的方法。

第一种方法

两个独立的应用程序,当你的Ruby on Rails应用程序工作时,可以创建另一个反应应用程序,并使用Ruby on Rails应用程序中存在的所有端点,如果你找不到一些需要的端点,你可以检查已经制作的端点,并按照方式制作几个新的端点。希望这样做会更容易。

在轨道上使用红宝石

在这种方法中,您必须分解您的项目并删除项目中已经存在的所有 Angular Gem,并使用 ReactJS 从新的前端开始。在我看来,它需要更多的Ruby on Rails知识才能做到这一点,但最终,你只会得到一个项目。

您的项目

从 Gem 文件来看,它似乎大量使用 Angular,所以您可能已经运行了它并检查它是否使大多数端点变得 Restful。如果是,那么我建议继续方法一并创建新的 ReactJS 应用程序,该应用程序将使用在 Ruby on rails 中创建的所有端点,这将在 React 端应用程序上进行更多工作,而在 Ruby on Rails 上工作更少。即使您发现某些端点不存在,您也可以按照已创建的端点编码和操作进行操作,您将在其中完成详细信息。我知道会有两个不同的项目,但是学习Ruby on Rails并将其与React集成的学习曲线将不仅仅是两个不同的项目。

最新更新