Spring Boot與React集成的示例代碼
前言
前不久學(xué)習(xí)了Web開(kāi)發(fā),用React寫了前端,Spring Boot搭建了后端,然而沒(méi)有成功地把兩個(gè)工程結(jié)合起來(lái),造成前端與后端之間需要跨域通信,帶來(lái)了一些額外的工作。
這一次成功地將前端工程與后端結(jié)合在一個(gè)Project中,記錄一下,也希望能幫到那些和我一樣的入門小白。
環(huán)境
Windows 10 - x64, Java 1.8.0, node v8.9.4, npm 6.1.0
前奏
*JDK, Node 和 NPM請(qǐng)自行安裝
新建一個(gè)Spring Boot工程
在Intellij里選擇Spring Initializer新建,

依賴添加devTool和Web

隨后就初始化了后端的Spring boot項(xiàng)目
在Spring boot項(xiàng)目的文件夾內(nèi),新建一個(gè)React工程,推薦用create-react-app,沒(méi)有的話通過(guò)npm安裝到全局
// npm install -g create-react-app create-react-app frontene
主曲
添加Maven插件frontend-maven-plugin
<plugins> <plugin> <!-- https://mvnrepository.com/artifact/com.github.eirslett/frontend-maven-plugin --> <groupId>com.github.eirslett</groupId> <artifactId>frontend-maven-plugin</artifactId> <version>1.6</version> ... </plugin> </plugins>
frontend-maven-plugin可以在打包時(shí)build react項(xiàng)目,并將build得到的前端頁(yè)面文件放入指定位置。
配置frontend-maven-plugin
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<nodeVersion>v8.11.1</nodeVersion>
<npmVersion>5.6.0</npmVersion>
<nodeDownloadRoot>http://npm.taobao.org/mirrors/node/</nodeDownloadRoot>
<!--<npmDownloadRoot>http://npm.taobao.org/mirrors/npm/</npmDownloadRoot>-->
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>install</arguments>
</configuration>
</execution>
<execution>
<id>npm run-script build</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run-script build</arguments>
</configuration>
</execution>
</executions>
<configuration>
<installDirectory>target</installDirectory>
<workingDirectory>frontend</workingDirectory>
</configuration>
Maven這一插件會(huì)依次執(zhí)行install-node-and-npm, npm install, npm run-script build三條命令。
配置中的installDirectory指定了node和npm的安裝位置,在jar包中安裝node和npm確保在沒(méi)有安裝node和npm的機(jī)器上jar包依然可以運(yùn)行,如果安裝了則會(huì)屏蔽全局的node和npm。
WorkingDirectory值為前端項(xiàng)目package.json文件所在路徑,插件會(huì)自動(dòng)在workingDirectory下運(yùn)行npm install和npm run-script build命令。
Webpack 配置
通過(guò)create-react-app生成的項(xiàng)目里并沒(méi)有webpack的配置,在frontend里npm run eject,會(huì)彈出許多個(gè)文件夾,config下可以看見(jiàn)與webpack相關(guān)的多個(gè)配置文件。
這里需要修改paths.js 中的 module.exports = { ... },修改后如下
module.exports = {
dotenv: resolveApp('.env'),
appBuild: resolveApp('../src/main/resources/static/'), // 設(shè)置build所產(chǎn)生的文件的放置位置
appPublic: resolveApp('../src/main/resources/static/'), // 設(shè)置public文件夾內(nèi)文件在build后的存放位置
appHtml: resolveApp('public/index.html'),
appIndexJs: resolveApp('src/index.js'),
appPackageJson: resolveApp('package.json'),
appSrc: resolveApp('src'),
yarnLockFile: resolveApp('yarn.lock'),
testsSetup: resolveApp('src/setupTests.js'),
appNodeModules: resolveApp('node_modules'),
publicUrl: getPublicUrl(resolveApp('package.json')),
servedPath: getServedPath(resolveApp('package.json')),
};
尾聲
前后端工程結(jié)合通過(guò)以上一些操作就可以實(shí)現(xiàn)一個(gè)工程開(kāi)發(fā),同時(shí)前后端仍然是解耦的,僅測(cè)試前端效果只需要在前端文件下用node運(yùn)行。
實(shí)踐證明,在前端應(yīng)用react-router并不需要對(duì)后端作其他配置。
這篇博文只是將Spring Boot和React結(jié)合到一個(gè)項(xiàng)目里的一次簡(jiǎn)單的嘗試,本人Web開(kāi)發(fā)并不精通,懇請(qǐng)高手斧正。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java Socket編程(三) 服務(wù)器Sockets
Java Socket編程(三) 服務(wù)器Sockets...2006-12-12
java顯示當(dāng)前的系統(tǒng)時(shí)間
這篇文章主要介紹了java如何顯示當(dāng)前的系統(tǒng)時(shí)間,代碼很簡(jiǎn)單,自己可以自定義顯示的系統(tǒng)時(shí)間的顏色和字體,需要的朋友可以參考下2015-10-10
spring profile 多環(huán)境配置管理詳解
這篇文章主要介紹了 spring profile 多環(huán)境配置管理詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01
Java使用路徑通配符加載Resource與profiles配置使用詳解
這篇文章主要介紹了Java使用路徑通配符加載Resource與profiles配置使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Java語(yǔ)言實(shí)現(xiàn)對(duì)MySql數(shù)據(jù)庫(kù)中數(shù)據(jù)的增刪改查操作的代碼
這篇文章主要介紹了Java語(yǔ)言實(shí)現(xiàn)對(duì)MySql數(shù)據(jù)庫(kù)中數(shù)據(jù)的增刪改查操作的代碼,實(shí)現(xiàn)了連接數(shù)據(jù)庫(kù),和數(shù)據(jù)庫(kù)的增刪改查操作,有興趣的可以了解一下。2016-12-12
Java 中HttpURLConnection附件上傳的實(shí)例詳解
這篇文章主要介紹了Java 中HttpURLConnection附件上傳的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能掌握這樣的知識(shí)內(nèi)容,需要的朋友可以參考下2017-09-09
mybatis-plus?實(shí)現(xiàn)查詢表名動(dòng)態(tài)修改的示例代碼
通過(guò)MyBatis-Plus實(shí)現(xiàn)表名的動(dòng)態(tài)替換,根據(jù)配置或入?yún)⑦x擇不同的表,本文主要介紹了mybatis-plus?實(shí)現(xiàn)查詢表名動(dòng)態(tài)修改的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03
springboot整合企微webhook機(jī)器人發(fā)送消息提醒
這篇文章主要為大家介紹了springboot整合企微webhook機(jī)器人發(fā)送消息提醒,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

