강의자료: 웹 게임을 만들며 배우는 React
package.json
에 패키지들을 넣어주면 된다.//리액트 가져오기
const React = require('react');
const { Component } = require('react');
// 모듈을 밖에서도 쓸 수 있게 해주는 코드
module.exports = WordRelay;
//npm에 설치한 react 불러오기
const React = require('react');
const ReactDom = require('react-dom');
//WordRelay 모듈 불러오기
const WordRelay = require('./WordRelay');
ReactDom.render(<WordRelay />, document.querySelector('#root'));
html
에는 하나의 코드만 불러올 수 있으니까 ./dist/app.js
파일에 다 들어가야함.<html>
<head>
<meta charset="UTF-8"/>
<title>끝말잇기</title>
</head>
<body>
<div id="root"></div>
<script src="./dist/app.js"></script>
</body>
</html>
webpack.config.js
로 다 돌아감const path = require('path'); //경로 조작하기 위한
module.exports = {
name: 'wordrelay-setting',
mode: 'development', // 실서비스할려면 production
devtool: 'eval', //빠르게
resolve: {
extensions: ['.js','jsx']
}, //entry에서 확장자 달기 귀찮을 때 쓰는 방법
entry: {
app: ['./client.jsx','WordRelay.jsx'],
},//입력
output: {
path: path.join(__dirname, 'dist'), //dirname은 현재폴더이니까 경로를 쉽고빠르게 조작 가능
filename: 'app.js'
},//출력
};
웹팩에서 client.jsx
를 불러오면 client.jsx
에서 WordRelay.jsx
를 불러오니까 webpack에서 client.jsx
를 불러오면 알아서 둘 다 불러와짐
명령어 설정이 안되어있어서 설정해줘야함
package.json
에서 설정"scripts": {
"dev": "webpack"
},
그리고 `npm run dev webpack` 터미널에 적어줌
npx webpack
쓰기 webpack이 실행되면 dist
폴더에 app.js
파일 생성
npm init
,name
은 폴더명같게author
에 이름,license
에 MIT,yes
npm i react react-dom
설치npm i -D webpack webpack-cli
설치npm i -D babel-loader @babel/core @babel/preset-env @babel/preset-react
webpack.config.js
만들고const path = require('path');
module.exports = {
mode: 'development',
devtool: 'eval',//hidden-source-map
resolve: {
extensions: ['.jsx','.js'],
},
entry: {
app: './client',
},
module:{
rules: [{
test: /\.jsx?$/,
loader: 'babel-loader',
options:{
presets:['@babel/preset-env','@babel/preset-react'],
plugins:[],
},
}],
},
output:{
filename: 'app.js',
path: path.join(__dirname, 'dist'),
},
};
package.json
파일에 "dev": "webpack"
추가client.jsx
, GuGudan.jsx
생성GuGudan.jsx
const React = require('react');
const { useState, useRef } = React;
....//코드 넣기
module.exports = GuGudan;
📝client.jsx
const React = require('react');
const ReactDom = require('react-dom');
const GuGudan = require('./GuGudan');
ReactDom.render(<GuGudan />, document.querySelector('#root'));
npx webpack
입력 후 오류같은거 수정하고 성공하기index.html
파일 생성 후 코드입력하고 확인<html>
<head>
<meta charset="UTF-8">
<title>구구단</title>
</head>
<body>
<div id="root"></div>
<script src="./dist/app.js"></script>
</body>
</html>
presets
에 preset을 병렬로 정리한 후 중괄호를 열어 안에 설정을 넣어줌presets:
[['@babel/preset-env', {
targets: {
browsers: ['list 2 chrome versions'],
},
}],
'@babel/preset-react',
],
🔗브라우저스 리스트 주소
사이트 들어가서 추가 옵션 적용해 보기
브라우저 지원 옵션을 설정할 수 있음
module안에 플러그인 말고도 다른 plugins를 설정할 수 있음
- 엄청 많음....
plugins :[
new webpack.LoaderOptionsPlugins({debug: true}),
],
위에서 const webpack = require('webpack'); 불러와야함
npm i react-refresh @pmmmwh/react-refresh-webpack-plugin -D
터미널에 입력npm i -D webpack-dev-server
깔기package.json
에서 "dev": "webpack serve --env development",
로 변경webpack.config.js
파일에const RefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
입력module
부분에도 rules
에 babel-loader
options
에서 plugins:['react-refresh/bable',]
추가plugins
에 plugins:[new RefreshWebpackPlugin()],
추가devSever: {
devMiddleware: { publicPath:'/dist/'},
static: {directory: path.resolve(__dirname)},
hot:true
}
추가
const { useState, useRef } = React;
로 바꿔주기21.10.28 끝👶
자바 공부 좀 해야겠다,,