2016-10-31 48 views
2

我一直在考虑使用React作为Grails应用程序的前端,但我在开始时遇到了一些问题。是否可以将React(使用Webpack)与Grails集成?

到目前为止,我已经习惯了在Webpack的帮助下使用Node/NPM编写React应用程序,这很容易,因为该设置有大量文档。

但是,我正在努力寻找具体的与Grails无缝集成React的东西。
理想情况下,我只会做grails run-app,它应该照顾一切。我不希望其他团队成员担心启动两台不同的服务器或者这些服务器。

请让我知道是否有人曾经这样做过。

回答

4

Webpack可以配置为与Grails一起使用。关键是要让webpack在应用程序启动时生成它的包,并在可从GSP提供服务的目录中输出该包。如果使用Webpack,您不希望源资源管理器(即,React/ES6代码)位于资产管道中,而是希望将这些源文件保存在另一个目录中(例如src/webapp),并将Webpack配置为捆绑这些文件并将结果输出到资产管道(假设您使用的是AP)。

下面是的WebPack的示例配置:

var path = require('path'); 

module.exports = { 
    entry: { 
     index: './src/webapp/index.js' 
    }, 
    output: { 
     path: './grails-app/assets/javascripts', 
     publicPath: '/assets/', 
     filename: 'bundle.js' 
    }, 

最后,实现了一体化的WebPack/Grails的启动,可以使用摇篮节点插件和附加的WebPack运行脚本,应用程序启动的自定义任务在您的build.gradle(这是假设你有定义了一个名为“的WebPack”一个NPM脚本的WebPack运行)

assetCompile.dependsOn(['npmInstall', 'npm_run_webpack']) 

请注意,如果你想在“观看”模式的WebPack运行,你需要做的从开始分开p Grails应用程序,以便该脚本可以持续运行(实际上在Gradle模式插件中支持此操作,但它目前已被破坏)。

请参阅此链接这种方法更深入的解释,有一个示例应用程序:http://grailsblog.objectcomputing.com/posts/2016/05/28/using-react-with-grails.html

也会检出Grails的3阵营简介:https://github.com/grails-profiles/react

它尚未发布,但应该在未来几天内。它利用这里和链接的文章中列出的相同方法。

+0

感谢您的回答。这可能是一个愚蠢的问题,但是如果我还在使用Grails 2.x,可以做所有这些吗?你给我的链接是关于Grails 3的,我只是想确定一下。 – gjvatsalya

+0

该配置文件仅适用于Grails 3,但只要您使用资产管道插件(Grails 2.4以后的默认版本,旧版本可用),您可以使用Grails 2中的博客文章中列出的相同步骤。另外,在我的答案中概述的Gradle任务在Grails 2中不起作用,但我相信您仍然可以将Gradle与Grails Gradle插件(https://github.com/grails/grails-gradle-plugin)一起使用到完成类似的行为(关键是你需要在Grails应用程序启动之前运行webpack)。 – ZacharyAKlein

0

你可以使用npm's scripts feature所有步骤合并必须启动开发环境到一个单一的命令,例如:

// package.json 

{ 
    ... 
    "scripts": { 
     "start": "npm start-grails & npm start-react", 
     "start-grails": "grails run-app", 
     "start-react": "node server.js" 
    }, 
    ... 
} 

现在所需要的是一个简单的npm start启动所有相关的应用程序。

相关问题