node.js 설치하기
React , vue 는 node.js 가 설치되어 있어야 실행된다
프로젝트 생성하기
프로젝트 시작하기
React 설치하기
npx create-react-app frontend
npx create-react-app '원하는 이름' 으로 하면 된다.
React(Front) 와 SpringBoot(Back) 연동하기
React 기본 port는 3000 이다
Back 과 연동하기 위하여 package.json의 proxy 를 SpringBoot port로 추가 또는 변경해 준다.
@RestController
public class TestController {
@GetMapping("/test")
public String test() throws Exception{
return "안녕 React?";
}
}
import './App.css';
import React, {useEffect, useState} from "react";
import axios from "axios";
function App(){
const [data, setData] = useState('');
useEffect(()=>{
axios.get("/test")
.then(res => setData(res.data))
.catch(err => console.log("error : " + err))
})
return data;
}
export default App;
SpringBoot(Back) server 실행 후 terminal 에서 npm start 로 React(Front) server 실행한다
Front + Back server 한 번에 빌드 실행하기
매번 Front Server 실행, Back Server 실행하기에는 너무 귀찮다
현재 글은 gradle 을 기준으로 하고 있다
https://greed-yb.tistory.com/257
아래 코드를 추가해 준다
def frontendDir = "$projectDir/src/main/frontend"
sourceSets {
main {
resources { srcDirs = ["$projectDir/src/main/resources"]
}
}
}
processResources { dependsOn "copyReactBuildFiles" }
task installReact(type: Exec) {
workingDir "$frontendDir"
inputs.dir "$frontendDir"
group = BasePlugin.BUILD_GROUP
if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
commandLine "npm.cmd", "audit", "fix"
commandLine 'npm.cmd', 'install' }
else {
commandLine "npm", "audit", "fix" commandLine 'npm', 'install'
}
}
task buildReact(type: Exec) {
dependsOn "installReact"
workingDir "$frontendDir"
inputs.dir "$frontendDir"
group = BasePlugin.BUILD_GROUP
if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
commandLine "npm.cmd", "run-script", "build"
} else {
commandLine "npm", "run-script", "build"
}
}
task copyReactBuildFiles(type: Copy) {
dependsOn "buildReact"
from "$frontendDir/build"
into "$projectDir/src/main/resources/static"
}
변수 frontendDir 의 경로는 본인 프로젝트에 맞게 변경해줘야 한다
실행되어 있는 Server 들을 다 중지시키고
IntelliJ SpringBoot Run 또는 Debug 를 실행시킨다
단점은 개발을 진행할수록 코드량이 많아지니 build 할 때 시간이 점점 오래 걸린다
'개발 > Spring' 카테고리의 다른 글
[SpringBoot] Intellij + React + TypeScript 프로젝트 생성하기 (0) | 2024.10.22 |
---|---|
[SpringBoot] Intellij + React + Bootstrap + Router 적용하기 (1) | 2024.10.21 |
[Mybatis + Pageable] 게시판 페이징 처리 (0) | 2024.10.18 |
[Html + Javascript + Ajax + Paging] 게시판 페이징 처리 (0) | 2024.10.16 |
[Spring MVC] IntelliJ 에서 프로젝트 생성(4) - Tomcat 연결 (3) | 2024.10.04 |
댓글