Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以将React(使用Webpack)与Grails集成吗?_Grails_Reactjs_Webpack - Fatal编程技术网

可以将React(使用Webpack)与Grails集成吗?

可以将React(使用Webpack)与Grails集成吗?,grails,reactjs,webpack,Grails,Reactjs,Webpack,我一直在考虑使用React作为Grails应用程序的前端,但在开始时遇到了一些问题 到目前为止,我已经习惯于在Webpack的帮助下使用Node/NPM编写React应用程序,这非常简单,因为有大量关于该设置的文档 然而,我正在努力找到任何与Grails无缝集成的具体方法。 理想情况下,我只需要做grailsrunapp,它应该会处理好所有的事情。我不希望其他团队成员担心启动两个不同的服务器或类似的东西 请让我知道,如果有人这样做过 您可以使用将启动开发环境所需的所有步骤组合到一个命令中,例如:

我一直在考虑使用React作为Grails应用程序的前端,但在开始时遇到了一些问题

到目前为止,我已经习惯于在Webpack的帮助下使用Node/NPM编写React应用程序,这非常简单,因为有大量关于该设置的文档

然而,我正在努力找到任何与Grails无缝集成的具体方法。
理想情况下,我只需要做
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'])