일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mongo
- NPM
- nodejs교과서
- 리액트스타디
- 제로초예제
- NoSQL
- MongoDB
- npm명령어
- sementicversion
- mongoose
- component
- 리액트컴포넌트
- 리액트
- express-generator
- React
- nodeJS
- 시퀄라이즈
- 시퀄라이즈공부
- 리액트기초
- node
- sequelize
- 클래스컴포넌트
- React Component
- Today
- Total
개발노트
3. (1)webpack 본문
웹팩을 쓰는 이유 ?
한파일에 코드가 1000줄 2000줄 이렇게 길어지면
유지보수가 어려워짐
src="modal.js" 로 나눠도 (같은 코드 여러번 가져와서 쓰는거니까)
코드의 중복이 발생
여러 자바스크립트 파일을 하나의 자바스크립트로 합쳐주는 것이 웹팩
+바벨도 적용할수 있고, console.log도 제거할수있음 !
(웹팩을 자바스크립트 실행기(노드)가 실행해주기 때문에
노드 알아야 함. 물론 node, npm 도 깔아야 함 )
node 설치후, cmd로 webpack 과 react를 설치하기
//원하는 폴더로 이동후
npm init
npm i react react-dom
npm i -D webpack webpack-cli
//-D 는? 나는 개발용으로만 웹팩쓸꺼야 이뜻.
package.json 에 잘 설치된걸 확인
webpack config와 client.jsx 파일 만들기
설치한 react, react-dom을 불러온다
//webpack.config.js
module.exports = {
};
// client.jsx
const React = require('react');
const ReactDom = require('react-dom');
const WordRelay = require('./wordrelay');
ReactDom.render(<WordRelay />, document.querySelector('#root') );
만들고자하는 jsx 파일
//wordrelay.jsx
const React = require('React');
const { Component } = React;
class WordRelay extends React.Component{
state = {
text: 'hi, webpack ...'
}
render(){
return (
<p>{this.state.text}</p>
)
}
}
module.exports = WordRelay;
노드에서 불러왔기 때문에 html에서 이제 없어도 된다
<html lang="ko">
<head>
<meta charset="utf-8">
<title>끝 말 잇 기</title>
</head>
<body>
<div id="root"></div>
<script src="./dist/app.js">
</script>
</body>
</html>
<Gugudan /> 같이 xml + js = jsx
확장자가 jsx 이면 리액트 전용파일이라는걸 알수있어서
jsx문법쓰면 jsx를 붙여주도록 하자
파일을 쪼개는 경우에는... (노드의 모듈 시스템)
가져다 쓴다
: 쪼갠 파일(컴포넌트)에서 필요로하는부분(사용하는것들) 다 가져와야 된다는점
내보낸다
:이컴포넌트를 바깥에서도 쓰게해주게 내보내야 된다
app.js파일을 하나 만들어서
HTML 에서는 하나의 js파일을 실행할 수 있도록 해주는것이 목표
웹팩 설정파일에서 웹팩이 그렇게 해주도록 설정해보자
//webpack.config.js
const path = require('path');
module.exports = {
name:'wordrelay-setting', //붙이고싶은 이름
mode:'development', // 실서비스땐 production
devtool:'eval', // hidden-soruce-map
resolve:{
extensions:[ '.js', '.jsx']
},
entry:{
//app: ['./client.jsx', './wordrelay.jsx'],
app: ['./client'],
}, //입력
output:{
path: path.join(__dirname,'dist'),
filename:'app.js'
}, //출력
};
entry입력: 내가 만든 react파일들 이거( client.jsx ) 이거( wordrelay.jsx ) 합쳐서
output출력: dist/app.js에 만들어줘 라는 설정
devtool은 개발일때 eval /production일때hidden-source-map
Source Map이란 배포용으로 빌드한 파일과 원본 파일을 서로 연결시켜주는 기능
client파일에서wordrelay를 불러와서 쓰고있기 때문에 써줄필요없음
css, json 다 넣을수 있어서 확장자들 생략 가능하도록 resolve 라는 옵션을 추가
const path = require('path');
module.exports = {
name:'wordrelay-setting',
mode:'development',
devtool:'eval',
resolve:{
extensions:[ '.js', '.jsx']
},
entry:{
app: ['./client'],
},
output:{
path: path.join(__dirname,'dist'),
filename:'app.js'
},
};
웹팩실행 명령어인 npx webpack 하면
(.bin안에 있는 cli들을 실행시켜주는 편리한 npx를 사용)
npx webpack
jsx를 쓸수있게 해주는 바벨을 설치안했기 때문에 에러가 난다
'React > basic' 카테고리의 다른 글
3. (3)웹팩설정 @babel/preset-env / plugins (0) | 2020.07.15 |
---|---|
3. (2)babel (0) | 2020.07.15 |
2. Hooks (0) | 2020.07.14 |
1. (3) 구구단게임 (0) | 2020.07.14 |
1. (2)HTML속성, 상태(State), JSX (0) | 2020.07.13 |