2016-10-31 47 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啓動所有相關的應用程序。

相關問題