์.. ์ด ์ง๋ฌธ์ ์์ ์๊ฒ ๋ตํ๊ธฐ ์ํด์๋ ๋ฆฌ์กํธ ๋ด๋ถ ๋์์๋ฆฌ์ ์ํ๊ฐ ๋ณ๊ฒฝ, ๋ ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ์์ด์ผ ํ ๊ฒ์ด๋ค.์ผ๋จ, ์ฒ์ ์ด ์ง๋ฌธ์ ๋๋ ์ํ๊ฐ์ ์ด๋ป๊ฒ ๋ฐ๊พธ๋๋์ ๋ฐ๋ผ, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ํฉ์ด๋์ ๋ฐ๋ผ ๋ค๋ฅด์ง ์๊ฒ ๋๋๋ ๋ต์ ์ผ๋ ๋ฑ๋ ํ์๋ค. ๋์ถฉ ๋ง๋ ๋ง์ด
์ฐ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋ ์ผ์ผํ CPU ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ง๋ ์๋๋ค. ์์ฑํ๊ธฐ ํธ๋ฆฌํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด ํ๋ก๊ทธ๋๋ฐํ๊ณ , ๊ทธ ํ์ ์ปดํ์ผ๋ฌ๋ผ๋ ํ๋ก๊ทธ๋จ์ ์ด์ฉํด ์์ฑํ ์ฝ๋๋ฅผ CPU๊ฐ ์คํํ ์ ์๋ ๊ธฐ๊ณ์ด ๋ช ๋ น์ด๋ก ๋ฒ์ญํ๋ค.์ปดํ์ผ๋ฌ๋ ๋ณต์กํ๊ณ
Immediately Invoked Function Expressions. ํจ์ ์ ์์ ๋์์ ์ฆ์ ํธ์ถ๋๋ ์ฆ์ ์คํ ํจ์.์ฆ์ ์คํ ํจ์๋ ๋จ ํ ๋ฒ๋ง ํธ์ถ์ด ๋๋ฉฐ, ๋ค์ ํธ์ถํ ์ ์๋ค.์ด๋ ๊ฒ ํจ์ ๋ฆฌํฐ๋ด๋ก ์์ฑํด ์ฌ์ฉํ ์ ์๋ค.( )๋ก ๊ฐ์ธ์ฃผ๋ ์ด์ ๋ ์๋ฐ์คํฌ
์ฌ์ค ๊ณ ๋ฐฑ์ ํ์๋ฉด, 4์ฃผ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ useEffect์ ๋ํด์ ์ ๋ชจ๋ฅด๊ณ ์์๋ค. ํด๋์คํ ์ปดํฌ๋ํธ๋ก ์์ฑํ๋ 2์ฃผ ํ๋ก์ ํธ์์ ๋ฉ์๋๋ฅผ ๋ฐ์ธ๋ฉํด์ฃผ๊ณ , ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ง์ณ ๋ฆฌ์กํธํ ์ด ์ข๋ค๊ณ ํ ๋ง์ ์ด๋๋ ค ๋ฌด์์ ๋ฆฌ์กํธํ ์ผ๋ก ์ฝ๋๋ฅผ ์
์ค์ฝํ๋ฅผ ์ดํดํ๊ธฐ ์ํด์ ์ปดํจํฐ๊ฐ ๋์ํ๋ ๊ณผ์ ์ ์กฐ๊ธ ์์๋ณผ ํ์๊ฐ ์๋ค. ์ปดํจํฐ ๋์ ๊ณผ์ ์ ๋ณต์กํ๊ณ ์ด๋ฅผ ์ ํํ ์๊ธฐ ์ํด์๋ ์ปดํจํฐ ๊ตฌ์กฐ์ ๋ํด์ ๋ ๊น์ด ์ดํดํด์ผํ์ง๋ง, ์ฐ์ ์ ์ค์ฝํ๋ฅผ ์ดํดํ๋๋ฐ ๋์์ด ๋ ์ ๋๋ก๋ง ์์ฃผ์์ฃผ ๊ฐ๋จํ๋ง ์์ฝ์ ๋ฆฌํด๋ณธ๋ค. ์ปดํจํฐ๋
๋์ผํ ์ ๋ ฅ์ ๋ํด ํญ์ ๋์ผํ ์ถ๋ ฅ์ ๋ฐํํ๋ ํจ์์ธ๋ถ์ํ์ ์ํฅ์ ๋ฏธ์น๋ side effect๊ฐ ์๋ ํจ์ ์๋๋ ์์ํจ์์ ์์๋ค.๊ทธ๋ฆฌ๊ณ ์๋๋ ์์ํจ์๊ฐ ์๋ ํจ์์ ์์๋ค.์ฌ๊ธฐ์ ์ ๊น ํท๊ฐ๋ฆด ์ ์๋ ์์!์๋์ ์ฝ๋์์๋ ์ธ์๋ก ๋ฐ์ ๊ฐ์ฒด์ ์๋ฌด ๋ณํ๋ฅผ ์ฃผ์ง
๋ ํฌํจ ํ๋ก ํธ์๋ 3๋ช , ๋ฐฑ์๋ 1๋ช ์ผ๋ก ํ์ ๊ตฌ์ฑํด 2์ฃผ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค. ๊ธฐ์กด์ ์ง์ฌ์ง ํ ์คํธ์ผ์ด์ค๋ฅผ ํต๊ณผํ๊ฑฐ๋ ์ ํด์ง ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋๋ ๊ฒ์ ๋ฒ์ด๋์ ์ง์ง๋ก ๋ด๊ฐ ๋ง๋ค๊ณ ์ถ์ ์ดํ๋ฆฌ์ผ์ด์ , ์น์๋น์ค๋ฅผ ๋ง๋๋ ์ผ์ด์๋ค. ๊ทธ๋์์ ํ๋ก ํธ, ๋ฐฑ์๋ ๋ชจ๋๋ฅผ ์กฐ๊ธ์ฉ
๋ฆฌ์กํธ๋ก ์ปดํฌ๋ํธ ๋จ์ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด, ์ ์ ์ ์ธํฐ๋์ ์ ๋ฐ๋ผ ๋ณํ ์ ์๋ ๋ถ๋ถ ์ฆ, State(์ํ)๋ฅผ ๋ณ๊ฒฝํ๊ณ ๊ด๋ฆฌํ๋ ์ผ์ด ๋งค์ฐ ์ค์ํ๋ค๋ ๊ฒ์ ์ ์ ์๊ฒ ๋๋ค. ํ์ง๋ง ์ปดํฌ๋ํธ์ State์ props๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๊ณผ์ ์์ ๋ก์ง์ด ๋ณต์กํ๊ฒ ์ฝํ๋ ๊ฒฝ์ฐ๊ฐ
React ์ด์ ๊น์ง๋ ์๋ฐ์คํฌ๋ฆฝํธ์ DOM์ ์ด์ฉํด ํ์ด์ง ๋จ์์ ๊ฐ๋ฐ์ ๋ค๋ค๋ค๋ฉด, ๋๋์ด ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฆฌ์กํธ๋ฅผ ํ์ฉํด ์ปดํฌ๋ํธ ๋จ์์ ๊ฐ๋ฐ์ ์ ํ๊ฒ ๋์๋ค. ์ฒ์์๋ ํ์ด์ง ๋จ์์ ์ปดํฌ๋ํธ ๋จ์ ๊ฐ๋ฐ์ ์ฐจ์ด์ ๊ณผ ์ฅ๋จ์ ์ด ์๋ฟ์ง ์์๋๋ฐ, ajax๋ฅผ ๋ค๋ฃจ๋ฉด์
<๋์์ ์ฝ๋ ์๊ณ ๋ฆฌ์ฆ>์ ์์์ ์ฝ๋ ์ค.. ! ๋๊ณ ์ถ๋ค.์ ์๋์๊ด์์ ๋์ถํด์ ์ฝ์ผ๋ ์ ๋ง ํธํ๊ตฐ.. ๊ทธ๋ฐ๋ฐ ui๊ฐ ๋๋ฌด ์ฌ๊ฐํ๊ฒ ๋ฌธ์ ๊ฐ ์ฌํด์ ๊ฐ์ ์ข ๋์ผ๋ฉด ์ข๊ฒ ๋ค. ๊ฑฐ์ ๋ญ ํํ์ค ์์ค๊ณผ ๋ง๋จน๋๋ค. ๋๋ค์ ์ข ์์ธ ์ ๊ณ ์ 5์์ด ์ฐพ์์ ๋๋ค์ ํํ์ค์ ์จ๋ฆ
์๊ณ ๋ฆฌ์ฆ & ์๋ฃ๊ตฌ์กฐ์ ์นํด์ง๊ธฐ ์ํด ์์ํ๋ ์๋ฆฌ์ฆ 1์ผ 1์๊ณ ๋ฆฌ์ฆ ํ์ด - ์๋์ฝ๋, ๊ทธ๋ฆผ์ผ๋ก ํํํด๋ณด๊ธฐ ์๊ฐ๋ณต์ก๋ ์๊ณ ๋ฆฌ์ฆ / ์๋ฃ๊ตฌ์กฐ ๊ด๋ จ ์ฑ ํ๊ธฐ -ํ์ฌ ์กฐ๊ธ์ฉ ์ฝ๊ณ ์๋ ์ฑ 1)ํฌ๋ก์ฝ๋ฉ: ๊ทธ๋ฆผ์ผ๋ก ๊ฐ๋ ์ ์ดํดํ๋ ์๊ณ ๋ฆฌ์ฆ|ํ๋น๋ฏธ๋์ด 2)๋์์ ์ฝ๋ ์๊ณ ๋ฆฌ์ฆ
์์ ๊ธ์์ Ajax๊ฐ ํด๋ผ์ด์ธํธ-์๋ฒ๊ฐ์ ํต์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์น ๊ฐ๋ฐ ๊ธฐ๋ฒ์ด๋ผ๊ณ ์ ๋ฆฌํ๋๋ฐ, ์ด๋ฒ์ ๋ณธ๊ฒฉ ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๋ญ์ง์ ๋ํด์ ์์ฑํด๋ณด๋ ค๊ณ ํ๋ค.๋น๋๊ธฐ์ ์ฒ๋ฆฌ ๋ชจ๋ธ(Asynchronous processing model ๋๋ Non-Blocking pr
Ajax(Asynchronous JavaScript And XML) ์์ ์๋ ์นํ์ด์ง์์ ๋ญ๊ฐ๋ฅผ ํด๋ฆญํ๋ฉด ํ์ด์ง ์ ํ์ ์ํด ์ ์ฒด ํ์ด์ง ์ ๋ถ๋ฅผ ์ฌ๋ก๋ฉํด์ผ ํ๋ค. ๊ณผ๊ฑฐ์ ๋ค์ด๋ฒ ํ์ด์ง์์ ํด๋ฆญ์ ํ๋ฉด์ด ๊ป๋ป ๊ฑฐ๋ฆฌ๋๊ฒ ๊ทธ ๋๋ฌธ์ด๋ค. ์ด๋ฐ ๊ฑธ Static Web Page(
HTTP๋? HyperText Transfer Protocol : html๊ณผ ๊ฐ์ ํ์ดํผ๋ฏธ๋์ด ๋ฌธ์๋ฅผ ์ ์กํ๊ธฐ ์ํ Application Layer(7์์ฉ๊ณ์ธต) ํ๋กํ ์ฝ ์ค ํ๋์ด๋ค. ์น ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ๊ฐ์ ํต์ ์ ์ํด ๋์์ธ๋์๋ค. HTTP๋ ๋ฌด์ํ ํ๋กํ ์ฝ
์ด๋ฒ์ฃผ ํ ์ฃผ๋์ ์ ๋ง ์ ์ ์๊ฒ ์๋ก์ด ๊ฒ๋ค์ ๋ฐฐ์ ๋ค. ๋จ์ง ์ฝ๋ ๋ก์ง์ ์ด๋ป๊ฒ ๋ง๋๋์ง์ ๋ํ ์ฐ์ต? ๋ณด๋ค๋ ํด๋ผ์ด์ธํธ/์๋ฒ์ ๋ํ ์ ๋ฐ์ ์ธ ๊ฐ๋ ๋ค์ ์ ํ๋ค. ์ ๋ง ์ ์ ์์๋ค. ์ถฉ๋ถํ ์ํํด๋ด์ง ๋ชปํ ๊ฒ ๊ฐ์๋ฐ ๊ณ์ํด์ ์๋ก์ด ์ฉ์ด, ๊ฐ๋ ๋ค์ด ํ์ด๋์์ ๋จธ๋ฆฌ๊ฐ ์ง๋
Prototype ํ๋กํ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด ์งํฅ ์ธ์ด์๋ ๋ฌ๋ฆฌ ํ๋กํ ํ์ ๊ธฐ๋ฐ ๊ฐ์ฒด ์งํฅ ์ธ์ด(prototype based language)๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ์์ ํ๋กํ ํ์ ์ด๋ ๋จ์ด์ ๋ป ๊ทธ๋๋ก '์ํ', ์ฆ ์ํ ๊ฐ์ฒด๋ผ๋ ์๋ฏธ๋ค
์ ์ผ ์ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ๊ฐ๋ ์ ๋ฐฐ์ธ ๋ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผ, ์ถ๊ฐ, ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ์ตํ์๋ค. ๊ทผ๋ฐ ์ ์๊พธ ํท๊ฐ๋ฆฌ๋ ๊ฒ์ธ์ง ๋ด ์์ ์ด ๋ต๋ตํด์ ์ ์ ๋ฐ ์ด์ ๊ทธ๋ง ํท๊ฐ๋ ค๋ผ. ํ๋ฉด์ ๋งจ๋ MDN์์ ๊ฒ์ํ๊ณ ์, ์ด๊ฑฐ์์ง ํ๊ณ ๋์ค์ ๋ ํท๊ฐ๋ คํด์ ์ค๋ ์ง์ง ๊ทธ๋ง
์ด๋ฏธ ์๋ง์ ๋ธ๋ก๊ทธ, ์์ , ์ ํ๋ธ์ OOP์ ๋ํ ์ค๋ช ๊ณผ ๊ฒฌํด๋ค์ด ๋์ณ๋๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋๋ OOP๋ ๋ฌด์์ธ์ง, ์ด๋ค ํน์ง์ด์๋์ง ๋ด ๋๋ฆ๋๋ก ์ ๋ฆฌ๋ฅผ ํด๋ณด๋ ๊ฑด ์ค์ํ ๊ฒ ๊ฐ๋ค.OOP(๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ)์ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์ ํจ๋ฌ๋ค์ ์ค ํ๋๋ค. ์ฆ, 'ํ๋ก๊ทธ๋๋ฐ
๊ทธ๋์์๋ ์ ์คํธ๋ฆผ ๋ ํ์งํ ๋ฆฌ๋ฅผ ๋์ ๋ฆฌ๋ชจํธ ๋ ํ์งํ ๋ฆฌ๋ก ํฌํฌ, ๋ก์ปฌ๋ก ํด๋ก ํด์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , git add, git commit, git push๋ก ๋ค์ ๋ฆฌ๋ชจํธ ๋ ํ์งํ ๋ฆฌ๋ก ์ฌ๋ฆฐ ํ PR๋ก ๋ง๋ฌด๋ฆฌํ๋ ๊ณผ์ ์ ๊ฑฐ์ณค์๋ค. ์ปดํจํฐ ํ์ผ์ ๋ณ๊ฒฝ์ฌํญ์ ์ถ์ ํ๊ณ ์ฌ๋ฌ ๋ช ์
๊ฐ๋ฐ๋๊ตฌ ๋ฐ ํ๋ก๊ทธ๋จ ์ค์น, ์ ๊ฑฐ, ์ ๊ทธ๋ ์ด๋๋ฅผ ์๋ํํ๋ ์ํํธ์จ์ด ๋๊ตฌ๋ค์ ๋ชจ์.ํฐ๋ฏธ๋์ ์ด์ด cli๋ก ์ค์นํ๋ค. Homebrew ์ฌ์ดํธ์์ ์ค์น ์คํฌ๋ฆฝํธ๋ฅผ ๋ณต์ฌํด์ฃผ๊ธฐ๋ง ํ๋ฉด๋๋ค. ์ด๋ 'ctrl + c ํค'๋ฅผ ์ด์ฉํด ์์ ์ ์ทจ์(๊ฐ์ ์ข ๋ฃ)ํด ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ค์