Отделение внешнего интерфейса от изоморфного веб-приложения Ruby on Rails.

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

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

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

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

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

Спасибо


person Om Patel    schedule 14.11.2016    source источник
comment
Мне любопытно посмотреть, как это прошло для вас. Мы пытаемся сделать то же самое там, где я сейчас работаю, и подумали о том, чтобы использовать что-то похожее на второй подход.   -  person Gabe H    schedule 01.06.2017
comment
Стоит отметить, что с Rails v5.1 и драгоценным камнем webpacker (выпущенным в 2017 году) интеграция React в (новое) приложение Rails стала намного проще. medium.com/react-on-rails/   -  person XtraSimplicity    schedule 30.01.2018


Ответы (2)


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

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

person zanedev    schedule 15.11.2016

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

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

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

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

person Mitch VanDuyn    schedule 18.11.2016
comment
Стоит отметить, что с Rails v5.1 и драгоценным камнем webpacker (выпущенным в 2017 году) интеграция React в (новое) приложение Rails стала намного проще. medium.com/react-on-rails/ - person XtraSimplicity; 30.01.2018