Проект Grails с React/Flux

В настоящее время я работаю над проектом, в котором у нас разрабатывается пользовательский интерфейс React/Flux. Мне говорят, что код пользовательского интерфейса должен быть преобразован в GSP и помещен в проект Grails для работы с нашим бэкэндом. Я чувствую, что перемещение пользовательского интерфейса в GSP сведет на нет использование нашей реализации Flux (Reflux).

Сначала я думал, что это неправильно, и я не нашел использования Grails и Flux в процессе поиска.

3 ответа

Я связан с производственным приложением Grails, которое использует React в качестве внешнего интерфейса. Нет необходимости "конвертировать" код React/Flux в GSP - фактически это в значительной степени жертвует преимуществами пользовательского интерфейса React. В этом нет необходимости - Grails очень хорошо подходит для обеспечения надежного бэкэнда Restful для приложения React (или Angular, или любой другой платформы JS).

В зависимости от потребностей вашего приложения, вы, вероятно, захотите предоставить успокоительный API-интерфейс для интерфейса пользователя, который будет потреблять / отправлять по мере необходимости. использование URLMappings.groovy указать конечные точки, к которым приложение React может получить доступ. Скорее всего, вы решите использовать JSON в качестве средства передачи данных в приложение React. Представления Grails JSON - это быстрое, гибкое и простое средство для визуализации объектов домена Grails или других данных в полезную нагрузку JSON.

В отношении Flux не должно быть ничего, специфичного для Grails, - используйте его для управления и изменения своего состояния в приложении React, возможно, отправляя вызовы покоя из вашего диспетчера Flux (или создателя действий) в бэкэнд Grails для получения данных и обновления вашего Flux. хранить.

Что касается GSP, я рекомендую просто иметь базовый вид GSP с вашего основного контроллера, который просто загружает Javascript, необходимый для запуска вашего приложения React. Если вы используете пакет модуля, такой как веб-пакет, это может быть так же просто, как связать ваш bundle.js файл в вашем представлении и предоставление корневого элемента, указанного в компоненте верхнего уровня:

<html>
<head>
    <title>My App</title>
</head>
<body>

  <div id="app"></div>
  <asset:javascript src="bundle.js"/>

</body>
</html>

Обратите внимание, что для того, чтобы это работало, вы должны выводить webpack связать в grails-app/assets/javascripts Это самый простой способ загрузить приложение React в приложение Grails. Используя этот подход, нет необходимости загружать React, Flux или другие связанные библиотеки напрямую в Grails - просто создайте свой проект, используя стандартный набор инструментов JS (используя npm / package.json управлять вашими зависимостями) и обработать / связать все приложение в простой JS-пакет, который может быть загружен ресурсным конвейером Grails.

React делает отличный выбор как библиотека Javascript, ориентированная на представление, которая не делает много предположений относительно вашей серверной архитектуры. React отлично подходит для современного одностраничного пользовательского интерфейса Javascript в приложении Grails, благодаря надежному интерфейсу API на основе Grails и разумному выбору инструментов и структуры проекта.

Вам говорят неправильно. GSP - это сервлеты Java. Единственная причина смешивать React с серверной технологией - это изоморфное приложение, где вы должны скомпилировать свой JS до его возвращения / отправки клиенту. В этом случае вам нужно будет создать что-то похожее на сервлет на основе Rhino. В противном случае относитесь к нему так же, как к любому другому статическому активу.

Почему использование GSP сводит на нет использование React или Flux? GSP - это просто язык обработки на стороне сервера, который отображает HTML. В последний раз я проверял, что React и Flux хорошо используют HTML для множества вещей в сочетании с Javascript.

Вы можете использовать их вместе без каких-либо проблем. Как это зависит от вас.

Другие вопросы по тегам