๐ ๊ฐ๋ฐ ๊ณต๋ถ 1๊ฐ์ ์ฐจ์ธ to-be ๊ฐ๋ฐ์์ ์์ต ๋ธ๋ก๊ทธ๐๏พ Aug 16 ~ 20, 2021
ํ์ฌ ์ํ
๋ค ๋จน์ง๋ ๋ชปํ๊ณ , ๊ฒจ์ฐ ๋จน์ ๊ฒ๋ ๋ค ์ํํ์ง ๋ชปํ ์ฒด๋ก ํจ๊ปํ๊ณ ์์ด์ ๋ถ์กฑํ ์ ์ด ๋ง์๋ฐ, ํนํ ์ง๊ธ ๋์๊ฒ ๋ถ์กฑํ ์ ์ JavaScript ๊ธฐ์ด๊ฐ ๋๋ฌดx345 ๋ถ์กฑํ๋ค.
๋ณต์ต์ ๋ณต์ต๋๋ก, ์ง๋๋ ์ง๋๋๋ก ๋๊ฐ์ผ ํ๋ค.
โ ๏ธ ์ฒ์์ ์ด๊ธฐ setting ํ๋๋ผ ํ๋ฃจ๋ฅผ ๋ค ์์งํด๋ฒ๋ฆด ์ ์์ ์ฃผ์
Installation
@ browser
- Node.js download ๋งํฌ
- Node.js๋ฅผ ์ค์นํ๋ฉด NPM์ด tool์ด ๋ธ๋ ค์ค๋๋ฐ, NPM์ผ๋ก library๋ค์ ์ฝ๊ฒ ์ค์นํ ์ ์์
- Create-React-App์ด๋ผ๋ library๋ฅผ ์ฐ๋ ค๋ฉด Node.js๋ฅผ ๊น์์ผ ํจ
- M1์ ์์ ํ๋ณด๋ค ์ต์ ํ์ด ๋ ํธํ์ด ์ ๋ง๋๋ค๋ ์๊ธฐ๊ฐ ์์
@ desktop
- project ์งํํ directory ์์ฑ
@ terminal
- Create-React-App์ผ๋ก React project ์์ฑ
: npx create-react-app (project๋ช
)
- npx : npm์ ์ฌ๋ผ๊ฐ ์๋ package๋ฅผ ๋ฐ๋ก ์คํํ๊ณ ์ค์นํ๋ ๊ฒ
@ editor
- node.modules, package.json, git-ignore๋ผ๋ folder๊ฐ ์๋์ง ํ์ธ
- Create-React-App ๋๋ถ์ ๊ฐ๋ฐ ํ๊ฒฝ์ด ์ด๋ ๊ฒ ์์์ setting๋์ด ์๋ ๊ฒ์ธ๋ฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด Babel๋ก ์ง์ ํ๊ฒฝ์ settingํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์
- .gitingnore์ .eslintcache ์์ฑํด์ ์ถ๊ฐ
- folder์ file ์ค ๋ถํ์ํ ๊ฒ ์ญ์
ex. logo.js
- Routes.js์ code ์
๋ ฅ
- ํ์ํ file import
@ editor terminal
- project ์งํํ directory๋ก ์ด๋
npm install react-router-dom --save
- react-dom์ ์ค์นํ๋ ๊ฒ
npm install node-sass@4.14.1 โ-save
- react-dom ์ค์น
- CRA ver "4.0.3" ๊ณผ node-sass ver 6.0์ด๋ ํธํ์ด ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก ๋ฌธ์ ํด๊ฒฐ ์ ๊น์ง node-sass ver 4.14.1๋ก ๋ฒ์ ์ ์ง์ ํด์ ์ค์นํด์ผ ํจ
- package.json์์
"react-dom" "^17.0.2"
์ ๊ฐ์ด ์ค์น๋ ๋ด์ฉ ํ์ธ ๊ฐ๋ฅ
npm start
- browser๊ฐ ์ด๋ฆผ
- App.js์์ ์์ ํ๋ฉด ๋ฐ๋ก ์ด browser์ ๋ฐ์๋จ
- ์ด๊ฒ๋ create-react-app์ด ํด์ฃผ๋ ๊ธฐ๋ฅ
- App.js๊ฐ main page์ ๋ค์ด๊ฐ HTML์ ์์ฑํ๋ ๊ณณ์ธ๋ฐ, ๊ทธ๋ ๋ค๊ณ App.js file์ด main page๋ ์๋๊ณ , ์ค์ main page๋ public์ด๋ผ๋ folder ์์ ์๋ index.html file์
: App.js์ ๋ด์ฉ์ด index.js ์์ document.getElementById('root')
๋ฅผ ํตํด index.html์ ๊ทธ๋ ค์ง๊ณ ์๋ ๊ฒ
npm install react-router-dom
- routing์ ์ํ router ์ค์น
folders & files
node_modules
- ์ด project๋ฅผ ์คํํ ๋ ์ฌ์ฉ๋๋ dependency module์ด ๋ชจ๋ ๋ชจ์ฌ์๋ folder
- ์ฌ๊ธฐ์ ์ค์น๋์ด ์๋ ๋ด์ฉ์ package.json file์ ๊ธฐ๋ก๋์ด ์์ (
"dependencies"
๋ถ๋ถ)
- ์ด folder๋ฅผ ์ง์ฐ๋ฉด project๋ฅผ ๋์ธ ์ ์์
ใด ์ง์ฐ๋๋ผ๋ npm install
ํ๋ฉด ๋ค์ ์ค์นํ ์ ์์ (๋จ package.json file์ด ์์ ๋์ง ์์์ผ ํจ)
- ํฌ๊ธฐ๊ฐ ๋๋ฌด ํฌ๊ณ file๋ ๋ง์์ Git์ ์ฌ๋ฆด ๋ ์ด folder๋ ์ฌ๋ฆฌ์ง ์์
public
- ์ ๋ณ๊ฒฝ๋์ง ์๋ staticํ file์ ๋ณด๊ดํจ
- index.html์
body
tag์ ์๋ <div id="root"></div>
๋ฅผ ํตํด React code๋ฅผ ์คํํด์ ๋ง๋ค์ด์ง DOM์ด ๊ตฌํ๋จ
src
- ๋๋ถ๋ถ์ ์์
์ด ์งํ๋๋ folder
- index.js์ ๊ธฐ์ฌ๋์ด ์๋
import App from './App';
๊ฐ ์๊น ๋์ด browser์ ํ๋ฉด์ ๊ตฌํํ๋ code
- App.js์์ code ๊ตฌํํ๋ฉด ๋จ
- ์ฌ๊ธฐ์ code ์
๋ ฅํ๋ฉด browser์ ๋ฐ๋ก ๋ฐ์๋จ (= HMR : Hot Module Replacement)
- ํน์ pages folder๋ Footer.js ๋ฑ ํ์ํ file์ ์์ฑํด์ code ์ง๋ฉด ๋จ
- 'Footer.js'์์ ์ฒซ ๊ธ์ ๋๋ฌธ์์ฌ์ผ ํ๊ณ ,; .js ๋์ .jsx๋ก ์ ์ฅํด๋ ๋์๋ ์ ์์ผ๋ ์์ฐํ ๋ค๋ฅด๋ฏ๋ก js ํ์ผ๋ก ์์ฑํด์ผ ํจ
reportWebVitals();
๋ reportWebVitals.js (performance ๊ด๋ จ์) ์ฒ๋ผ ๋น์ฅ ํ์์๋ code๋ ์ญ์
package.json
npm start
๊ฐ์ ๋ช
๋ น์ด๋ ์ด file์ ๊ธฐ๋ก๋์ด ์์ ("scripts"
๋ถ๋ถ)
- start : ๊ฐ๋ฐ mode๋ก program์ ์คํ
- build : ์ค์ ๋ฐฐํฌ mode๋ก ๋ง๋ฆ
- test : ๊ทธ๋ฅ test?
- eject : ๋ด๋ถ ์ค์ file์ ๊บผ๋ (web page๋ Babel ์ค์ ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋ ์ฌ์ฉ)
index.html
- ์ผ์ง browser (localhost:3000) ์ ๊ฐ๋ฐ์๋๊ตฌ์์ Elments tab์ ๋ณด๋ฉด
<div id="root">
๋ฐ์ <div class="App">...</div> == $0
๊ฐ ์๋ ๊ฒ์ ์ ์ ์๋ค.
๊ธฐํ ํ์ํ folder ๋ฐ file ์์ฑ
ex.
- 1๏ธโฃ 'component' folder ์์ฑ ํ ํ์ํ component file ์ถ๊ฐ
- component folder ๋ฐ์์ (.gitignore์ ๊ฐ์ level์์) .eslintcache file์ ๋ง๋ค์ด์ .gitignore์ ์ถ๊ฐ
- 2๏ธโฃ 'styles' folder ์์ฑ ํ reset.scss, common.scss file ์ถ๊ฐ
- project directory ๋ด์ Index.js์ฒ๋ผ Routes.js file ์์ฑ
- Routes.js์ component ๊ฒฝ๋ก ๊ธฐ์ฌ
- .css๋ public folder์ ์ ๊ทผํ๋ ๊ฒ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ํ์ํ image๋ src/assets/images ์ด๋ฐ ๊ณณ์ ์ ์ฅ
1๏ธโฃ
// ๊ฐ page์ component
import Login from './pages/Login/Login';
import Main from './pages/Main/Main';
// importํ component ๊ฒฝ๋ก ์ค์
<Route exact path='/signin' component={Sign-in} />
<Route exact path='/' component={Main} />
2๏ธโฃ
@mixin flexCenter {
display: flex;
align-items: center;
justify-content: center;
}
// .css file์์
@import '../common.scss'
.logo {
@include flexCenter;
}
๐ the source of this content
์ฝ๋ฉ์๋ง