2016-11-14 4 views
0

У нас есть наше веб-приложение, полностью построенное на Ruby on Rails. Передняя часть плотно соединена с бэкэндом. Мы находимся в стадии, когда мы хотим постепенно отделить наш интерфейс от бэкэнда. Мы хотим пойти с ReactJS с частью пользовательского интерфейса, и мы хотим следовать модели водопада для перехода.Разделение переднего конца от изоморфного веб-приложения Ruby on Rails.

У нас есть два варианта:

  1. Использование драгоценных камней называется react-rails и строить новые компоненты в React. Медленно начинайте преобразовывать существующие компоненты в компоненты React. После того, как все компоненты преобразуются в компоненты React, выньте каждый компонент React, разделите полный интерфейс и разместите его где-то еще.

  2. Host ReactJS где-то еще. Постепенно начните преобразовывать каждый компонент в компонент React, переместите его в новое место размещения и удалите из Rails. Единственный улов - компоненты React будут расположены в другом месте, чем Rails. Во время навигации в приложении это может привести к переходу на другой веб-сайт.

Оставьте отзыв и направляйте нам в каком направлении следует продолжать работу. Наша конечная цель - иметь полный интерфейс в ReactJS и backend на Rails. Они обмениваются данными через API, полностью удаляя связь между интерфейсом и бэкэнд.

Благодаря

+0

Мне любопытно посмотреть, как это пошло для вас. Мы пытаемся сделать то же самое, где я сейчас работаю, и подумали о том, чтобы пойти с чем-то похожим на второй подход. –

+0

Стоит отметить, что с Rails v5.1 и «webpacker' gem (выпущенный в 2017 году) интеграция React в (новое) приложение Rails намного проще. https: // medium.com/react-on-rails/free-tutorial-how-to-use-react-with-webpacker-and-rails-5-1-92af8e8d9d63 – XtraSimplicity

ответ

1

Используйте # 1, только если вы планируете на сохранении рельсов в смеси рендеринга сервера (не рекомендуется). Если нет, то №2 - ваш лучший вариант, чтобы начать с нуля с помощью полного js-решения. Он не должен чувствовать себя как другой сайт, если вы создаете развязанную библиотеку реагирующих компонентов и конвейер рендеринга в существующее приложение rails, когда ему нужны новые представления. Затем, когда вы преобразуете все компоненты вида, вы можете закончить логику приложения и полностью перевести коммутатор.

Другой вариант - вам даже не нужно размещать новые реагирующие компоненты отдельно, реагирующие компоненты могут проходить через отдельный цикл сборки, затем кэшироваться на существующем сервере и визуализироваться по мере необходимости с рельсов.

1

Я бы на самом деле НЕ рекомендовал удаляться от вашей системы с рубином. Вы можете использовать http://ruby-hyperloop.io для создания ваших компонентов react.js в Ruby. Hyperloop включает в себя Ruby DSL (HyperReact) для реагирования и HyperMesh, который даст вам полный доступ к вашим моделям ActiveRecord в ваших компонентах React.

Огромные преимущества в том, что вы будете иметь дело с одним языком, вам не нужно создавать API-интерфейсы только для доступа к вашим данным на клиенте, и вы можете использовать существующую цепочку инструментов рельсов, включая инструменты тестирования.

Существует огромная библиотека компонентов React.js, которые отлично взаимодействуют с HyperReact.

Если по какой-либо причине вы чувствуете, что лучше идти по маршруту JS, я бы рекомендовал рельсы. Он работает, хорошо поддерживается и обрабатывает предварительную передачу (очень важная концепция.) Вы также можете легко интегрироваться с NPM и webpack.

+0

Стоит отметить, что с Rails v5.1 и 'webpacker' gem (выпущенный в 2017 году), интеграция React в (новое) приложение Rails намного проще. https://medium.com/react-on-rails/free-tutorial-how-to-use-react-with-webpacker-and-rails-5-1-92af8e8d9d63 – XtraSimplicity