如何使用Ruby on Rails 4后端服务React应用

时间:2019-04-03 12:53:34

标签: javascript ruby-on-rails ruby reactjs backend

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

我们的gemfile如下:

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%工作。

1 个答案:

答案 0 :(得分:1)

您只是共享了Gem文件,但没有共享此应用程序的开发方式,因此信息不足,无法给您准确的答复。但通常会采用两种不同的方法。

第一种方法

当您的ruby on rails应用程序正常工作时,两个单独的应用程序可以创建另一个react应用程序,并使用Ruby on Rails应用程序中存在的所有端点,如果找不到某些需要的端点,则可以检查已完成的端点并几个新的跟随方式。希望这样做会更容易。

使用Ruby on Rails宝石

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

您的项目

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