可以将React(使用Webpack)与Grails集成吗?
我一直在考虑使用React作为Grails应用程序的前端,但在开始时遇到了一些问题 到目前为止,我已经习惯于在Webpack的帮助下使用Node/NPM编写React应用程序,这非常简单,因为有大量关于该设置的文档 然而,我正在努力找到任何与Grails无缝集成的具体方法。可以将React(使用Webpack)与Grails集成吗?,grails,reactjs,webpack,Grails,Reactjs,Webpack,我一直在考虑使用React作为Grails应用程序的前端,但在开始时遇到了一些问题 到目前为止,我已经习惯于在Webpack的帮助下使用Node/NPM编写React应用程序,这非常简单,因为有大量关于该设置的文档 然而,我正在努力找到任何与Grails无缝集成的具体方法。 理想情况下,我只需要做grailsrunapp,它应该会处理好所有的事情。我不希望其他团队成员担心启动两个不同的服务器或类似的东西 请让我知道,如果有人这样做过 您可以使用将启动开发环境所需的所有步骤组合到一个命令中,例如:
理想情况下,我只需要做
grailsrunapp
,它应该会处理好所有的事情。我不希望其他团队成员担心启动两个不同的服务器或类似的东西
请让我知道,如果有人这样做过 您可以使用将启动开发环境所需的所有步骤组合到一个命令中,例如:
// package.json
{
...
"scripts": {
"start": "npm start-grails & npm start-react",
"start-grails": "grails run-app",
"start-react": "node server.js"
},
...
}
现在只需要一个简单的
npm启动
就可以启动所有相关的应用程序。Webpack可以配置为与Grails一起很好地工作。关键是让webpack在应用程序启动时生成其包,并将包输出到GSP提供服务的目录中。如果您使用Webpack,您不希望源JavaScript(即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启动,您可以使用Gradle节点插件并在build.Gradle
中的自定义任务中将webpack运行脚本附加到应用程序启动中(这是假设您定义了一个名为“webpack”的npm脚本来运行webpack)
请注意,如果您想在“观看”模式下运行webpack,您需要在启动Grails应用程序的同时单独执行此操作,以便该脚本可以连续运行(Gradle模式插件中实际上支持此操作,但目前已中断)
有关此方法的更深入解释,请参见此链接,并提供一个示例应用程序:
还要检查Grails 3的React配置文件:
它还没有发布,但应该在未来几天内发布。它使用了本文和链接文章中概述的相同方法 谢谢你的回答。这可能是一个愚蠢的问题,但如果我仍然使用Grails2.x,是否有可能做到这一切?您给我的链接谈到了Grails 3,我只是想确定一下。该概要文件只适用于Grails 3,但只要您使用的是资产管道插件(Grails从2.4开始默认,并且在旧版本中可用),您就可以使用Grails 2遵循博客文章中概述的相同步骤。另外,我的回答中概述的Gradle任务在Grails2中不起作用,但我相信您仍然可以将Gradle与Grails Gradle插件()结合使用来完成类似的行为(关键是您需要在Grails应用程序启动之前运行webpack)。那么watch任务呢?你知道如何同时开始这两项工作吗?
assetCompile.dependsOn(['npmInstall', 'npm_run_webpack'])