我们有一个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%工作。
答案 0 :(得分:1)
您只是共享了Gem文件,但没有共享此应用程序的开发方式,因此信息不足,无法给您准确的答复。但通常会采用两种不同的方法。
当您的ruby on rails应用程序正常工作时,两个单独的应用程序可以创建另一个react应用程序,并使用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集成的学习曲线将不仅仅是拥有两个不同的项目。