使用 React/Flux 的 Grails 项目

标签 grails flux refluxjs

我目前正在做一个项目,我们正在为我们开发一个 React/Flux UI。我被告知需要将 UI 代码转换为 GSP 并放入 Grails 项目中,以便与我们的后端一起使用。我觉得将 UI 移到 GSP 中将使我们的 Flux 实现 (Reflux) 的使用无效。

我最初的想法是这是错误的,我通过搜索没有发现 Grails 和 Flux 的任何用途。

最佳答案

我参与了一个使用 React 作为前端的生产 Grails 应用程序。没有必要将 React/Flux 代码“转换”为 GSP——事实上,这会在很大程度上牺牲 React UI 的好处。没有必要 - Grails 非常适合提供 robust Restful backend到 React(或 Angular,或任何其他 JS 框架)应用程序。

根据您的应用程序需求,您可能希望为前端提供一个RESTful API,以便根据需要使用/发布。使用URLMappings.groovy指定 React 应用程序可以访问的端点。您可能会选择使用 JSON 作为向 React 应用程序发送数据的媒介 - Grails' JSON views是一种将 Grails 域对象或其他数据呈现到 JSON 有效负载的快速、灵活和直接的方法。

不应该有任何关于 Flux 的 Grails 特定的东西——用它来管理和改变你在 React 应用程序中的状态,也许通过从你的 Flux 调度程序(或 Action 创建者)到 Grails 后端进行休息调用来检索数据和更新你的 Flux店铺。

关于 GSP,我的建议是简单地在你的主 Controller 上有一个准系统 GSP View ,它只是加载运行你的 React 应用程序所需的 Javascript。如果您使用像 webpack 这样的模块捆绑器,这可以像链接您的 bundle.js 一样简单将文件放入您的 View 并提供在顶级组件中指定的根元素:

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

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

</body>
</html>

请注意,要使其正常工作,您必须输出 webpack捆绑到 grails-app/assets/javascripts ,我发现这是在 Grails 应用程序中加载 React 应用程序的最简单方法。使用这种方法,无需将 React、Flux 或其他相关库直接加载到 Grails 中 - 只需使用标准 JS 工具链构建您的项目(使用 npm/package.json 来管理您的依赖项),然后处理/捆绑整个应用程序到一个可以由 Grails Assets 管道加载的普通 JS 包中。

React 作为一个以 View 为中心的 Javascript 库是一个很好的选择,它不会对你的后端架构做很多假设。凭借基于 Grails 的可靠的 restful api,以及有关工具和项目结构的一些智能选择,React 非常适合 Grails 应用程序中的现代单页 Javascript UI。

关于使用 React/Flux 的 Grails 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36746427/

相关文章:

grails - 错误初始化类路径时出错:缓冲区下溢(Grails)

grails - 为什么Grails的脚手架创建 Action 使用参数?

javascript - React 不渲染来自回流存储的数据

javascript - 在 "Reflux"中, Action 的作用是什么?

reactjs - 如何使用 Reflux 商店处理分层数据?

grails - 如何在Spring Security Rest中自定义登录的响应

从 2.1 升级到 2.2.4 后 Grails 自动编译中断

reactjs - 如何保存本地组件数据,例如旋转器/错误,在 Flux 商店之外?

javascript - 将表单 onSubmit 委托(delegate)给 Flux Actions 的集中函数

javascript - React-Redux 设计模式 : Should a "deep" component be wired to Redux, 或从父组件接收 props?