Интеграция фреймворков JavaScript с Rails — не всегда простая задача, у Rails сильная внутренняя культура, которая может противоречить установке больших фреймворков JavaScript.
React-rails — это жемчужина, которая добавляет помощников и методы для облегчения разработки с помощью React, мы часто ее используем, и она создает хороший мост между React и Rails.
Чтобы установить гем, просто добавьте его в Gemfile:
гем «реагирующие рельсы»
Встроенный генератор для настройки проекта создает необходимые файлы, в том числе assets/javascripts/components.js, который используется для загрузки всех компонентов.
$ rails g реагировать: установить
Фреймворк загружает компоненты из component.js, а затем отображает их в JavaScript.
Если вы хотите отображать компонент на стороне сервера, вы можете добавить к параметрам prerender: true. Однако попытка выполнить предварительный рендеринг компонента имеет некоторые недостатки: Rails должен создать движок JavaScript для предварительного рендеринга компонента, который задерживает рендеринг, поэтому лучше использовать его только во время тестов или с кэшируемыми элементами.
Тестирование компонентов с помощью RSpec
Самый простой способ протестировать компоненты — просто создать контроллер, который будет предварительно отображать на стороне сервера любой компонент. Полученный результат затем можно использовать в тестовом коде.
И теперь рендерить компонент с помощью RSpec стало проще:
Не забудьте указать все компоненты в файле assets/components/components.js, так как это будет единственный файл, который будет загружен с этим контроллером.
Вывод
До сих пор гем react-rails очень помогал нам в Stklog использовать rails для большей части проекта и React только для необходимых частей. Мы не столкнулись с большими проблемами с ним. Я, вероятно, добавлю еще один пост о том, как выполнить некоторые преобразования перед использованием компонента в тесте (например, щелчок или зависание).