Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- spring-boot
- react
- Concurrently
- 인프런
- 타자 게임 만들기
- 거북이 대포 게임
- vs code 내 node
- 계산맞추기 게임
- 따라하며 배우는 노드 리액트 기본 강의
- react오류
- node.js 설치
- Colaboratory 글자 깨짐
- 리액트
- props
- JS 개념
- 모던자바스크립트
- 자바스크립트
- intellij
- Do it 자바스크립트 + 제이쿼리 입문
- DB Browser
- Spring-Framework
- Python
- ReactDOM.render is no longer supported in React 18. Use createRoot instead
- 웹 게임을 만들며 배우는 리액트
- intllij 내 Bean을 찾지 못해서 발생하는 오류
- node.js로 로그인하기
- You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client"
- 노드에 리액트 추가하기
- 모두의 파이썬
- googleColaboratory
Archives
- Today
- Total
프로그래밍 삽질 중
[웹 게임을 만들며 배우는 React] - 웹팩 데브 서버, 핫 리로딩 본문
출처: https://www.inflearn.com/course/web-game-react/dashboard
출처 : https://github.com/ZeroCho/react-webgame/tree/master/2.%EB%81%9D%EB%A7%90%EC%9E%87%EA%B8%B0
* 핫 리로딩이 필요한 이유
▶ 수정할 때마다 웹팩을 빌드해야 함
▶ 번거로움 늘어남
▶ 수정할 때마다 바로바로 확인이 되고 싶음 = 핫 리로딩 사용
* 새로고침과 핫 리로딩의 차이
- 새로고침 : 화면을 바꿀 때마다 기존 데이터가 날라감
- 핫 리로딩 : 화면을 바꿀 때마다 기존 데이터는 유지됨
https://ba-gotocode131.tistory.com/233
▶ 이 프로젝트에서 핫 리로딩 추가됨
1.터미널에 설치할 것들
npm i -D webpack-dev-server
npm install -D @pmmmwh/react-refresh-webpack-plugin react-refresh
npm i react-refresh
2. webpack.config.js에서 설치한 내용 추가
- path : 실제 경로
- publicPath : 가상의 경로(node의 express.static과 비슷함)
const path = require("path");
const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin"); //추가
module.exports = {
name: "gugudan-setting",
mode: "development",
devtool: "eval",
entry: {
app: "./client",
},
resolve: {
extensions: [".js", ".jsx"],
},
module: {
rules: [
{
test: /\.jsx?$/,
loader: "babel-loader",
options: {
presets: [
[
"@babel/preset-env",
{
targets: { browsers: ["last 2 chrome versions"] },
debug: true,
},
],
"@babel/preset-react",
],
plugins: ["react-refresh/babel"],
},
exclude: path.join(__dirname, "node_modules"),
},
],
},
plugins: [new ReactRefreshWebpackPlugin()], //추가
output: {
path: path.join(__dirname, "dist"),
filename: "app.js",
},
//추가
devServer: {
devMiddleware: { publicPath: "/dist" },
static: { directory: path.resolve(__dirname) },
hot: true,
},
};
3. package.json 내 scripts 부분 수정
{
"name": "webpack_gugudan",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
//이 부분 수정함
"dev": "webpack serve --env development"
},
"author": "",
"license": "ISC",
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@babel/core": "^7.19.1",
"@babel/preset-env": "^7.19.1",
"@babel/preset-react": "^7.18.6",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
"babel-loader": "^8.2.5",
"react-refresh": "^0.14.0",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0",
"webpack-dev-server": "^4.11.1"
}
}
4. 터미널 창에서 npm run dev를 치고 결과 확인