[React] 01. ๋ฆฌ์กํธ ์์
- -
๐ I. ์ ๋ฆฌ์กํธ(React)์ธ๊ฐ?
์ต๊ทผ ๋ช ๋ ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ(JS, JavaScript)๋ ๊ฐ๋ฐ์๋ค์ ๋จ๊ฑฐ์ด ๊ด์ฌ์ ๋ฐ๊ณ ์์ต๋๋ค. JS๋ ๋จ์ํ ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ๋์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ํต์ฌ์ ์ธ ์ญํ ๋ก ๋ฐ๋์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ JS๋ง์ผ๋ก๋ ํ๋ฐํธ ์๋ ์ฌ์ด๋์ชฝ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ์๋ ๋ฌด๋ฆฌ๊ฐ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด React, Angular, Ember.js ๋ฑ ์๋ง์ ํ๋ ์์ํฌ๋ค์ด ๊ฐ๋ฐ๋์์ต๋๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ ์ฌ๋ฌ ํ๋ ์์ํฌ ์ค React๊ฐ ์ค์ฌ์ด ๋ ์ด์ ์ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ ํด๋ณด๊ฒ ์ต๋๋ค. ๋ํ ๋ฆฌ์กํธ์ ์ฃผ์ํน์ง์ธ Virtual DOM์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
๐ 1. ์ ๋ฆฌ์กํธ์ธ๊ฐ?
ํ๋ก ํธ ์๋ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด MVC, MVVM, MVW ๋ฑ๊ณผ ๊ฐ์ด MV~๋ก ์์๋๋ ์ํคํ ์ฒ๋ค์ ๋ค์ด๋ณผ ์ ์์ต๋๋ค. ์ฝ๋ ๊ฐ๋ฐ์ ๊ท์น์ ๋ง๋ค์ด ๋ฐ๋ณต๋๋ ๊ฒ์ ํจํด์ผ๋ก ๋ง๋ญ๋๋ค. ์ด ํจํด์ ๋ชจ๋๊ฐ ๋ฐ๋ฅด๋๋ก ํ๋ ๊ตฌ์กฐ๋ฅผ ์ํคํ ์ฒ๋ผ๊ณ ํฉ๋๋ค. UI(User Interface)๊ฐ ๋ง๋ค์ด์ง ํ ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ฐ๋ฐํ๊ธฐ ์ํด ์์ญ์ ๋๋์์ต๋๋ค.
(1) MVC(Model-View-Controller) ์ํคํ ์ณ
- ์ด์ฐฝ๊ธฐ ์น ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
- View : ์ฌ์ฉ์์ ํ๋ฉด์ ๊ดํ ์์ญ์ ๋๋ค. HTML์ด๋ CSS๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
- Model : ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ๊ดํ ์์ญ์ ๋๋ค. JS์ ๊ฐ์ฒด(Object)
- Controller : Model๊ณผ View์ ์ค๊ฐ๊ณ์ธต์
๋๋ค. Model์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ฌ View์ ๋ฐ์ํ๊ณ ,
View๋ก๋ถํฐ ์ฌ์ฉ์์ ๋์์ ์ ๋ ฅ ๋ฐ์ Model์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
(2) MVVM(Model-View-View Model) ์ํคํ ์ณ
- View๋ฅผ ๋ค๋ฃจ๋ Model๋ง ๋ค๋ฃน๋๋ค.
- ํ ํ๋ฆฟ ๋ฐ์ธ๋ฉ ๊ธฐ๋ฐ์ ์น ๊ฐ๋ฐ์ ๋๋ค.
(3) MVW(Model-View-Whatever) ์ํคํ ์ณ
- Angular์์๋ ์์ ๋ค์ MVW ๋๋ MV*์ด๋ผ๊ณ ์ง์นญํ์ต๋๋ค. Model๊ณผ View ์ฌ์ด์์ ๋ฌด์ธ๊ฐ๋ฅผ ํ๋ค๋ ๋ป์ ๋๋ค.
์ปจํธ๋กค๋ฌ๊ฐ ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์์ ํ๊ณ , ๋ณ๊ฒฝ๋ ์ฌํญ์ ๋ทฐ์ ๋ฐ์ํ๋ฉฐ ์ ๋ฐ์ดํธ๊ฐ ๋ฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ์ ๋ฐ์ดํธ ํด์ผํ๋ ํญ๋ชฉ์ด ๋ง์์ง๊ณ ๋ณต์กํด์ง๋๋ค. ํ์ด์ค๋ถ ํ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ํ๋์ ์์ด๋์ด๋ฅผ ๊ณ ์ํฉ๋๋ค.
์ด๋ค ๋ฐ์ดํฐ๊ฐ ๋ณํ ๋๋ง๋ค ์ด๋ค ๋ณํ๋ฅผ ์ค์ง ๊ณ ๋ฏผํ๋ ๊ฒ์ด ์๋
๊ธฐ์กด์ ๋ทฐ๋ฅผ ๋ ๋ ค ๋ฒ๋ฆฌ๊ณ ์ฒ์๋ถํฐ ์๋ก ๋๋๋ง ํ๋ ๋ฐฉ์
ํ์ด์ค๋ถ ๊ฐ๋ฐ ํ์ด ์์ ์ค๋ช ํ ๋ฐฉ์์ผ๋ก ์ต๋ํ ์ฑ๋ฅ์ ์๋ผ๊ณ ํธ์ํ ์ฌ์ฉ์ ๊ฒฝํ(User Exprience)์ ์ ๊ณตํ๋ฉด์ ๊ตฌํํ๊ณ ์ ๊ฐ๋ฐํ ๊ฒ์ด ๋ฆฌ์กํธ(React)์ ๋๋ค.
๐ 2. ๋ฆฌ์กํธ ์ดํด
๋ฆฌ์กํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํ๋ ์์ํฌ์ ๋ฌ๋ฆฌ, ์ค์ง View๋ง ์ ๊ฒฝ ์ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
(1) ์ปดํฌ๋ํธ(Component)
- ํน์ ๋ถ๋ถ์ด ์ด๋ป๊ฒ ์๊ธธ์ง ์ ํ๋ ์ ์ธ์ฒด
- ๋ฐ์ดํฐ ์ ์ด ์ฃผ์ด์ง๋ฉด HTML ํ๊ทธ ํ์์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ ํ ํ๋ฆฟ๋ณด๋ค ๋ณต์กํ ๊ฐ๋
- ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ API, ๋ค์ํ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์ผ๋ฉฐ ์ปดํฌ๋ํธ ํ๋์ ์๊น์์ ์๋ ๋ฐฉ์์ ์ ์
(2) ๋๋๋ง(Rendering)
- ์ฌ์ฉ์์ ํ๋ฉด์ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ
๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฐ์ดํฐ๊ฐ ๋ณํํ ๋๋ง๋ค ์๋กญ๊ฒ ๋ฆฌ๋ ๋ฉํ์ง๋ง ์ฑ๋ฅ์ ์๋ผ๊ณ ์ต์ ์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
์ด ์๋ฆฌ์ ํค์๋๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๊ฐ ์ต์ด๋ก ์คํํ '์ด๊ธฐ ๋ ๋๋ง'๊ณผ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ผ๋ก ๋ค์ ์คํ๋๋ '๋ฆฌ๋ ๋๋ง' ์ ๋๋ค.
๐ 3. ์ด๊ธฐ ๋ ๋๋ง
๋ฆฌ์กํธ์์๋ ๋งจ ์ฒ์ ์ด๋ป๊ฒ ๋ณด์ผ์ง๋ฅผ ์ ํ๋ ์ด๊ธฐ ๋๋๋ง์ render ํจ์๋ฅผ ํตํด ๊ตฌํํฉ๋๋ค.
render() {...}
- render ํจ์๋ฅผ ํตํด ์ปดํฌ๋ํธ๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง๋ฅผ ์ ์
- HTML ํ์์ ๋ฌธ์์ด์ด ์๋ ๋ทฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ง๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ
- ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์์ ์ด ๋๋๋ฉด ์ง๋๊ณ ์๋ ์ ๋ณด๋ค์ HTML ๋งํฌ์ (markup)์ ๋ง๋ค๊ณ , ์ด๋ฅผ ์ฐ๋ฆฌ๊ฐ ์ ํ๋ ์ค์ ํ์ด์ง์ DOM ์์ ์์ ์ฃผ์
- ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ๋๋ ๋ฌธ์์ด ํํ์ HTML ์ฝ๋๋ฅผ ์์ฑํ ํ ํน์ DOM์ ํด๋น ๋ด์ฉ์ ์ฃผ์ ํ๋ฉด ์ด๋ฒคํธ๊ฐ ์ ์ฉ
๐ 4. ์กฐํ ๊ณผ์
๋ฆฌ์กํธ์์ ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธํ ๋๋ ์ ๋ฐ์ดํธ ๊ณผ์ ์ ๊ฑฐ์น๋ค๊ณ ๋งํ๊ธฐ ๋ณด๋ค๋ "์กฐํ ๊ณผ์ (Reconciliation)์ ๊ฑฐ์น๋ค"๊ณ ํ๋ ๊ฒ์ด ๋ ์ ํํฉ๋๋ค. ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ์ ๋ณํ์ ์ํด ๋ทฐ๊ฐ ๋ณํ๋๋ ๊ฒ์ด ์๋ ์๋ก์ด ์์๋ก ๊ฐ์ ๋ผ์์ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
- render ํจ์๋ ๋ทฐ๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๊ณ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ง๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ
- ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๊ฐ์ ์์ ํ๋ ๊ฒ์ด ์๋ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ render ํจ์๋ฅผ ๋ค์ ํธ์ถ
- ๋จ render ํจ์์ ๋ฐํํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ณง๋ฐ๋ก DOM์ ๋ฐ์ํ์ง ์๊ณ , ์ด์ ์ ์ปดํฌ๋ํธ ์ ๋ณด์ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋น๊ต
- ๋ ๊ฐ์ง ๋ทฐ๋ฅผ ์ต์ํ์ ์ฐ์ฐ์ผ๋ก ๋น๊ตํ ํ ๋์ ์ฐจ์ด๋ง์ ์์๋ด ์ต์ํ์ ์ฐ์ฐ์ผ๋ก DOM ํธ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธ
๐ II. ๋ฆฌ์กํธ์ ํน์ง
๐ 1. DOM์ด๋?
- DOM(Document Object Model)์ ๊ฐ์ฒด๋ก ๋ฌธ์ ๊ตฌ์กฐ๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ์ผ๋ก XML์ด๋ HTML๋ก ์์ฑ
- DOM API๋ฅผ ์๋ง์ ํ๋ซํผ๊ณผ ์น ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ๋ ์ ๋๋ก ํ์ฉ๋๊ฐ ๋์ง๋ง ๋์ UI์๋ ์ต์ ํ๋์ง ์๋๋ค๋ ์น๋ช ์ ๋จ์ ์ด ์กด์ฌ
- ๊ท๋ชจ๊ฐ ํฐ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ DOM์ ์ง์ ์ ๊ทผํ์ฌ ๋ณํ๋ฅผ ์ฃผ๋ฉด ์ฑ๋ฅ ์ด์๊ฐ ๋ฐ์ํ์ฌ ๋๋ ค์ง
- DOM ์์ฒด๋ ๋น ๋ฅด์ง๋ง ์น ๋ธ๋ผ์ฐ์ ์ ๋ณํ์ ๋ง์ถ์ด ๋ค์ ์ฐ์ฐํ๊ณ ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ๊ณผ์ ์ด ๋๋ฆฐ ๊ฒ
- DOM์ ์ต์ํ์ผ๋ก ์กฐ์ํ์ฌ ์์ ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ํด๊ฒฐ์ฑ
๐ 2. Virtual DOM
- ๋ฆฌ์กํธ์์๋ Virtual DOM ๋ฐฉ์์ ์ฌ์ฉํด DOM ์ ๋ฐ์ดํธ๋ฅผ ์ถ์ํํจ์ผ๋ก์จ DOM ์ฒ๋ฆฌ ํ์๋ฅผ ์ต์ํํ๊ณ ํจ์จ์ ์ผ๋ก ์งํ
- ์ค์ DOM์ ์
๋ฐ์ดํธํ ๋๋ ์ธ ๊ฐ์ง ์ ์ฐจ๋ฅผ ๋ฐ์
1. ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ์ ์ฒด UI๋ฅผ Virtual DOM์ ๋ฆฌ๋ ๋๋ง
2. ์ด์ Virtual DOM์ ์๋ ๋ด์ฉ๊ณผ ํ์ฌ ๋ด์ฉ์ ๋น๊ต
3. ๋ฐ๋ ๋ถ๋ถ๋ง ์ค์ DOM์ ์ ์ฉ
Virtual DOM์ ์ฌ์ฉํ๋ค๊ณ ๋ฌด์กฐ๊ฑด ๋นจ๋ผ์ง๋ ๊ฒ์ ์๋๋๋ค. ๋ฆฌ์กํธ ๋ฉ๋ด์ผ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ๋ฆฌ์กํธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
์ง์์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ณํํ๋ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถํ๊ธฐ
๋ฆฌ์กํธ์ Virtual DOM์ ์ ๋ฐ์ดํธ ์ฒ๋ฆฌ์ ๊ฐ๊ฒฐ์ฑ์ด ์ ๊ณต๋์ด์ผํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๐ 3. ๊ธฐํ ํน์ง
๋ฆฌ์กํธ๋ ํ๋ ์์ํฌ๊ฐ ์๋ ์ค์ง ๋ทฐ๋ง ๋ด๋นํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ฆฌ์กํธ๋ ๋ทฐ๋ง ์ ๊ฒฝ์ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฏ๋ก ๊ธฐํ ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํด์ผํฉ๋๋ค.
- ๋ผ์ฐํ ์๋ ๋ฆฌ์กํธ ๋ผ์ฐํฐ(react-router)
- Ajax ์ฒ๋ฆฌ์๋ axios๋ fetch
- ์ํ ๊ด๋ฆฌ์๋ ๋ฆฌ๋์ค(redux)๋ MobX๋ฅผ ์ฌ์ฉ
- ๋ฆฌ์กํธ๋ ๋ค๋ฅธ ์น ํ๋ ์์ํฌ๋ ๋ผ์ด๋ฒ๋ฆฌ๋ฅผ ํผ์ฉํ์ฌ ์ฌ์ฉํ ์ ์์
III. ์์ ํ๊ฒฝ ์ค์
๐ 1. Node.js์ npm
๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ Node.js์ ์ง์ ์ ์ธ ์ฐ๊ด์ ์์ง๋ง, ํ๋ก์ ํธ ๊ฐ๋ฐ์ ํ์ํ ๋๊ตฌ๋ค์ด Node.js๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ค์นํด์ผํฉ๋๋ค. ์ด๋ ์ฌ์ฉ๋๋ ๊ฐ๋ฐ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฐ๋ฒจ(babel) : ECMAScript 6๋ฅผ ํธํ์์ผ ์ค
- ์นํฉ(webpack) : ๋ชจ๋ํ๋ ์ฝ๋๋ฅผ ํ ํ์ผ๋ก ํฉ์น๊ณ (๋ฒ๋ค๋ง), ์ฝ๋๋ฅผ ์์ ํ ๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ฆฌ๋ก๋ฉํ๋ ๊ธฐ๋ฅ ๊ตฌํ
Node.js๋ฅผ ์ค์นํ๋ฉด ํจํค์ง ๋งค๋์ ๋๊ตฌ์ธ npm์ด ์ค์น๋ฉ๋๋ค. npm์ผ๋ก ์๋ง์ ๊ฐ๋ฐ์๊ฐ ๋ง๋ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๋ฒ์ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๐ 2. ๊ฐ๋ฐ ํ๊ฒฝ ์ค์น
์ด ํฌ์คํธ์์๋ window ํ๊ฒฝ์์ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
- Node.js ๊ณต์ ๋ด๋ ค๋ฐ๊ธฐ ํ์ด์ง (https://nodejs.org/ko/download/) ์์ Node.js๋ฅผ ๋ค์ด๋ฐ์ต๋๋ค.
- Node.js๋ฅผ ์ค์นํ ๋ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ npm์ด ์ค์น๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ผ๋ก์ ํฌ์คํธ์์๋ npm๋ณด๋ค ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์บ์ ์์คํ
๋ฐ ๋ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ yarn์ด๋ผ๋ ํจํค์ง ๊ด๋ฆฌ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ๊ฒ์
๋๋ค.
yarn์ npm์ ๊ธ๋ก๋ฒ ์ค์น ๊ธฐ๋ฅ์ ํตํด ์ค์นํฉ๋๋ค. ๋ค์ ์ฝ๋๋ฅผ Node.js command prompt์ ์์ฑํ์ธ์
$ npm install --global yarn - VS code ๊ณต์ ๋ด๋ ค๋ฐ๊ธฐ ํ์ด์ง (https://code.visualstudio.com/Download)์์ VS code๋ฅผ ์ค์นํฉ๋๋ค.
ํ์ฅ ๋ง์ผํ๋ ์ด์ค์์ Korean Language Pack for Visual Studio Code๋ฅผ ์ค์นํ์ฌ ํ๊ตญ์ด๋ก ์ค์ ํ ์ ์์ต๋๋ค. - git ๊ณต์ ๋ด๋ ค๋ฐ๊ธฐ ํ์ด์ง (https://git-scm.com/download/)์์ git์ ์ค์นํฉ๋๋ค.
macOS, ๋ฆฌ๋ ์ค์์ ์ฌ์ฉํ๋ ๋ช ๋ น์ด์ ํต์ผํ๊ธฐ ์ํ์ฌ bash ์๋ฎฌ๋ ์ดํฐ๋ ํจ๊ป ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๐ 3. ํ๋ก์ ํธ ์์ฑ
create-react-app์ ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๋ ํ์ํ ์นํฉ, ๋ฐ๋ฒจ์ ์ค์น ๊ณผ์ ์ ์๋ตํ๊ณ ๊ฐํธํ๊ฒ ํ๋ก์ ํธ ์์ ํ๊ฒฝ์ ๊ตฌ์ถํด์ค๋๋ค. ํฐ๋ฏธ๋์ ์ด๊ณ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๋๋ ํฐ๋ฆฌ์์ yarn create react-app <ํ๋ก์ ํธ ์ด๋ฆ> ๋ช ๋ น์ด๋ฅผ ์์ฑํ์ฌ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
$ yarn create react-app hello-react
ํ๋ก์ ํธ๊ฐ ์์ฑ์ด ์๋ฃ๋์๋ค๋ฉด, ๋ค์์ ๋ช ๋ น์ด๋ก ๋ฆฌ์กํธ ๊ฐ๋ฐ ์ ์ฉ ์๋ฒ๋ฅผ ๊ตฌ๋ํ ์ ์์ต๋๋ค.
$ cd hello-react
$ yarn start #๋๋ npm start
์ด ๊ณผ์ ์ ํตํด ๋ฆฌ์กํธ ๋ก๊ณ ๊ฐ ๋ณด์ด๋ ๊ฒ์ ์ ํ์ด์ง๋ฅผ ๋์ธ ์ ์์ต๋๋ค.
๐ Quiz
- ์น ์๋น์ค ์ด์ฐฝ๊ธฐ ์์ ๊ฐ๋ฐ์๋ค์ ์ฌ์ฉ์ ํ๋ฉด์ ๋ํ View ์์ญ, ์ํํธ์จ์ด๊ฐ ์ฃผ์ํ๊ฒ ๋ค๋ค์ผํ ๋ฐ์ดํฐ ์์ญ์ธ Model ์์ญ, ๊ทธ ์ค๊ฐ ๊ณ์ธต์ธ Controller ๊ฐ๋ฐ ์์ญ์ผ๋ก ๋๋์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ (____________) ๋ฐฉ์ ์ด๋ผ๊ณ ํฉ๋๋ค.
- (____________)๋ ํน์ ๋ถ๋ถ์ด ์ด๋ป๊ฒ ์๊ธธ์ง ์ ํ๋ ์ ์ธ์ฒด๋ก ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ API์
๋๋ค.
- (____________)์ด๋ ์ฌ์ฉ์์ ํ๋ฉด์ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋งํฉ๋๋ค.
- ๋งจ ์ฒ์ ํ๋ฉด์ ๋ณด์ด๋ ๋ฐฉ์์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ ๊ฒ์ (____________) ํจ์๋ฅผ ํตํด ๊ตฌํํฉ๋๋ค.
- ๊ฐ์ฒด๋ก ๋ฌธ์๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์ธ DOM์ ๋์ UI์๋ ์ต์ ํ๋์ง ์์ต๋๋ค. ๋๋ฌธ์ ๋ฆฌ์กํธ๋ (____________)์ ์ฌ์ฉํ์ฌ DOM ์ฒ๋ฆฌ ํ์๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ค์์ต๋๋ค.
- ๋ฆฌ์กํธ๋ ์ค์ง ๋ทฐ๋ง ๋ด๋นํ๋ (____________)์
๋๋ค. ๋๋ฌธ์ ๋ผ์ฐํ
, ์ํ ๊ด๋ฆฌ, Ajax ์ฒ๋ฆฌ ๋ฑ์ ์ง์ ๊ตฌํํด์ผํฉ๋๋ค.
- ๋ฆฌ์กํธ๋ Node.js์ ๋๊ตฌ๋ค์ ์ฌ์ฉํฉ๋๋ค. (____________)์ ๋ชจ๋ํ๋ ์ฝ๋๋ฅผ ํ๋์ ํ์ผ๋ก ํฉ์น๊ณ , ์ฝ๋ ์์ ์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ฆฌ๋ก๋ฉํฉ๋๋ค.
- yarn์ ์ด์ฉํ์ฌ <hello-corner> ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ์ฝ๋๋ฅผ ์์ฑํ์์ค.
- ๋ฆฌ์กํธ ๊ฐ๋ฐ ์ ์ฉ ์๋ฒ๋ฅผ ๊ตฌ๋ํ๋ ์ฝ๋๋ฅผ ์์ฑํ์์ค.
<์ ๋ต>
- MVC ์ํคํ ์ณ
- ์ปดํฌ๋ํธ
- ๋๋๋ง
- render
- Virtual DOM
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์นํฉ
- $ yarn create react-app hello-corner
- $ cd hello-corner
$ yarn start
'React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] 04. ์ด๋ฒคํธ ํธ๋ค๋ง (0) | 2022.10.10 |
---|---|
[React] # ํด๋์คํ ์ปดํฌ๋ํธ VS ํจ์ํ ์ปดํฌ๋ํธ (0) | 2022.10.09 |
[React] 03. ์ปดํฌ๋ํธ (1) | 2022.10.04 |
[React] 02. JSX (0) | 2022.09.26 |
[React] # ๋ฆฌ์กํธ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ (0) | 2022.09.25 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค