์ด๋ ธ๋ฒ ์ด์ ์บ ํ/์ง์์๊ธฐ (8) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ์ฒซ ํ์ ์ ํ๋ฉฐ ๋๋ ์ (์ค์ค๋ก ์์ฌ์ ๋ ์ / ๋ณด์ํ๊ณ ์ถ์ ์ ) ๋ง์งํ๋ฐฉ๐ (4์กฐ) https://github.com/s2hlimi/mini ๐ก์ ์๊ธฐ๊ฐ & ํ์ ์๊ฐ 2022.09.02 ~ 2022.09.08 FE: ์ฌํ๋ฆผ BE: https://github.com/prscsl/mini_project_T ๐ก์์ด์ดํ๋ ์ ๐ก๊ตฌํ๊ธฐ๋ฅ (1) ๊ณตํต API ๋ช ์ธ์ ์์ฑํ๊ธฐ UI ๊ตฌํํ๊ธฐ (2)์กฐ๊ฑด๋ถ ๋ ๋๋ง ๋ก๊ทธ์ธ ์์๋ง ๊ธ์ฐ๊ธฐ ์์ฑ ๋ฐ ๋๊ธ ์์ฑ๊ฐ๋ฅ ๋ฒํผ ๋ณด์ด๊ฒ ํ์ ์์ ์ ๊ธ ๋ฐ ๋๊ธ๋ง ์์ ์ญ์ ๊ฐ๋ฅ (3)ํ์๊ฐ์ , ๋ก๊ทธ์ธ CRUD ๊ตฌํ ํ์๊ฐ์ (์ ํจ์ฑ๊ฒ์ฌ) ์ค๋ณตํ์ธ ๋น๋ฐ๋ฒํธ (์ ํจ์ฑ๊ฒ์ฌ) ๋น๋ฐ๋ฒํธ ํ์ธ (์ ํจ์ฑ๊ฒ์ฌ) ๋ก๊ทธ์ธ (ํ์, ๋น๋ฐ๋ฒํธํ์ธ) (4)๋ณธ๋ฌธ CRUD ๊ตฌํ ๊ฒ์๊ธ ๋ฆฌ์คํธ ์กฐํ ํ๊ธฐ ๋ณธ๋ฌธ ์กฐํ ํ๊ธฐ ๋ณธ๋ฌธ ์ถ๊ฐ ํ๊ธฐ(์ด๋ฏธ์งํฌํจ) ๋ณธ๋ฌธ ์ญ์ ํ๊ธฐ(์ด๋ฏธ์งํฌํจ) ๋ณธ๋ฌธ.. ๋ผ์ดํ์ฌ์ดํด(ํด๋์คํ vs ํจ์ํ), react hooks LifeCycle Method LifeCycle Method ๋ ํ๊ตญ์ด๋ก "์๋ช ์ฃผ๊ธฐ ๋ฉ์๋" ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ ์ปดํฌ๋ํธ๊ฐ ๋ธ๋ผ์ฐ์ ์์ ๋ํ๋๊ณ , ์ ๋ฐ์ดํธ๋๊ณ , ์ฌ๋ผ์ง๊ฒ ๋ ๋ ํธ์ถ๋๋ ๋ฉ์๋๋ค ์ด๋ค. ์ถ๊ฐ์ ์ผ๋ก ์ปดํฌ๋ํธ์์ ์๋ฌ๊ฐ ๋ฌ์ ๋ ํธ์ถ๋๋ ๋ฉ์๋๋ ์๋ค. ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ์ฌ์ฉ ํ ์ ์๋ค. render( ) ํจ์ ์ปดํฌ๋ํธ ๋ชจ์์๋ฅผ ์ ์, ์ปดํฌ๋ํธ์์ ๊ฐ์ฅ ์ค์ํ ๋ฉ์๋, ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋ ์ค ์ ์ผํ ํ์ ๋ฉ์๋ this.props์ this.state์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ๋ฆฌ์กํธ ์์๋ฅผ ๋ฐํ constructor ๋ฉ์๋ constructor(props) { ... } ์ด๊ฒ์ ์ปดํฌ๋ํธ์ ์์ฑ์ ๋ฉ์๋๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ๋ ์ฒ์์ผ๋ก ์คํ, ์ด ๋ฉ์๋์์๋ ์ด.. 5์ฃผ์ฐจ ๊ณผ์ React ์ฌํ ์ฃผ์ฐจ ํค์๋ ๐ ๋ฆฌ๋์ค์์ ๋ฏธ๋ค์จ์ด ์ฒญํฌ์ ์ญํ ์ ๋ญ๊น์? ๋ฆฌ๋์ค์ ๋ค๊ฐ์ง ๊ตฌ์ฑ ์์ ๋ทฐ์์ ์ํ๊ฐ์ ๋ณ๊ฒฝ์ํค๊ณ ์ถ์ ๋ ์ก์ ์ ๋ฐ์์ํจ๋ค. ๋ทฐ์์ dispatch๋ฅผ ํธ์ถํ์ฌ, ๋ฆฌ๋์ค์๊ฒ ์ก์ ์ด ๋ฐ์ํจ์ ์๋ฆฌ๊ฒ ๋๋ค. ์ก์ ์ ๋ฐ์์ํค๋ฉด, ๊ทธ ์ก์ ์ ๋ฏธ๋ค์จ์ด๊ฐ ์ฒ๋ฆฌํ๋ค. ๋ฏธ๋ค์จ์ด๋ ์ต์ ๋์ด๋ค. ๊ธฐ๋ฅ์ ๋ฃ์๋ค๋ฉด ๋ฏธ๋ค์จ์ด๊ฐ ์ค๊ฐ์ ์ฒ๋ฆฌ๋ฅผํ๊ณ ๋ฏธ๋ค์จ์ด๊ฐ ์๋ค๋ฉด, ์ก์ ์ ๋ฐ๋ก ๋ฆฌ๋์๋ก ๋์ด๊ฐ๋ค. ๋ฆฌ๋์์์๋ ํด๋น ์ก์ ์ ์ํด์(์ก์ ํ์ ) ์ํ๋ฅผ ์ด๋ป๊ฒ ๋ณ๊ฒฝํ ์ง ๋ก์ง์ด ๋ด๊ฒจ์ ธ ์๋ค. ๊ทธ ๋ก์ง์ ๋ง๊ฒ ์๋ก์ด ์ํ๊ฐ์ ๋ฐํํ๋ค. ์๋ก์ด ์ํ๊ฐ์ ์คํ ์ด์๊ฒ ๋๋ฌํ๊ฒ๋๊ณ , ์คํ ์ด๋ ์๋ก์ด ์ํ๊ฐ์ ์ ์ฅํ๋ค. ์คํ ์ด๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๋ ์ต์ ๋ฒ๋ค์ด ์๋๋ฐ, ์ต์ ๋ฒ๋ค์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌ์ค์ ์๊ฒ๋๋ค. ์ฃผ๋ก "๋ทฐ"๊ฐ ์ต์ ๋ฒ๊ฐ ๋๋๋ฐ, ๋ทฐ๋ ๋ฐ.. React DOM, ์๋ฒ๋ฆฌ์ค ๐จDOM์ด๋? DOM(Document Object Model)์ ์น ํ์ด์ง๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ํ๋ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ฑํ๋ ๋ชจ๋ HTML ์กฐ๊ฐ์ ์ด ํธ๋ฆฌ์ ๋ ธ๋๋ก ์ถ๊ฐ๋ฉ๋๋ค. JavaScript๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๋ ธ๋(HTML ์์)์ ์ก์ธ์คํ๊ณ ์คํ์ผ, ์์ฑ ๋ฑ์ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ฆ, DOM์ ์ฌ์ฉํ๋ฉด JavaScript๊ฐ ์น ํ์ด์ง์ ์ฝ๊ฒ ์ก์ธ์คํ๊ณ ์์ ํ ์ ์์ต๋๋ค. ๋ชจ๋ ํธ๋ฆฌ์๋ ๋ฃจํธ ๋ ธ๋๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ฃจํธ ๋ ธ๋๋ ๋ฌธ์์ ๋๋ค. ์ด ๋ฌธ์ ๋ ธ๋๋ ๋ธ๋ผ์ฐ์ ์ ์ผ๋ถ์ ๋๋ค. ์์ฑํ๋ ๋ชจ๋ HTML ํ๊ทธ๋ ๋ฃจํธ ๋ ธ๋ ๋ฌธ์์ ์ง์ ๋๋ ๊ฐ์ ์์์ด ๋ฉ๋๋ค. ๐ป์๋ ์ด๋ฏธ์ง๋ DOM์ ๋๋ฑํ ๊ฐ๋ ์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ๐จ์๋ฒ๋ฆฌ์ค๋? ์๋ฒ๋ฆฌ์ค(serverless)๋ ๊ฐ๋ฐ์๊ฐ ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ํ.. JWT, API ๐จ JWT JWT๋ JSON Web Token์ ์ฝ์๋ก ๋น์ฌ์ ๊ฐ์ ์ ๋ณด๋ฅผ JSON ๊ฐ์ฒด๋ก ์์ ํ๊ฒ ์ ์กํ๊ธฐ ์ํ ๊ฐ๊ฒฐํ๊ณ ์์ฒด ํฌํจ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๊ฐ๋ฐฉํ ํ์ค์ด๋ค. ์ด ์ ๋ณด๋ ๋์งํธ ์๋ช ๋์ด ์์ผ๋ฏ๋ก ํ์ธํ๊ณ ์ ๋ขฐํ ์ ์๋ค. JWT๋ ๋น๋ฐ( HMAC ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ) ๋๋ RSA ๋ฅผ ์ฌ์ฉํ๋ ๊ณต๊ฐ/๊ฐ์ธ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์๋ช ํ ์ ์๋ค. Compact : ํฌ๊ธฐ ๋๋ฌธ์ URL, POST ๋งค๊ฐ๋ณ์ ๋๋ HTTP ํค๋ ๋ด๋ถ๋ฅผ ํตํด ๋ณด๋ผ ์ ์๋ค. ๋ํ ํฌ๊ธฐ ๋๋ฌธ์ ์ ์ก ์๋๊ฐ ๋น ๋ฅด๋ค. ์์ฒด ํฌํจ : ํ์ด๋ก๋์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ ๋ฒ ์ด์ ์ฟผ๋ฆฌํ์ง ์๋๋ก ์ฌ์ฉ์์ ๋ํ ๋ชจ๋ ํ์ ์ ๋ณด๊ฐ ํฌํจ๋๋ค. JWT ๊ตฌ์กฐ JWT๋ ๋ค์๊ณผ ๊ฐ์ด ์ ( )์ผ๋ก ๊ตฌ๋ถ๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค. xxxxx.yyyyy.zzzzz He.. SPA ๋ฐฉ์๊ณผ MPA ๋ฐฉ์ SPA ๋ฐฉ์๊ณผ MPA ๋ฐฉ์์ ๋ฌด์์ธ๊ฐ์? SPA(Single Page Application) MPA(Multi Page Application) ํ ๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ ์ฌ๋ฌ ๊ฐ์ ํ์ด์ง๋ก ๊ตฌ์ฑ ์ ๊ทผ๋ฐฉ์ ํ๋์ ์ธ ์ ๊ทผ ๋ฐฉ์ Google, Facebook, Twitter ๋ฑ์์ ์ฌ์ฉ ๊ณ ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์ ์ ์ ์๊ฑฐ๋ ๋น์ฆ๋์ค์ ๊ฐ์ด ๊ด๋ฒ์ํ ์ ํ ํฌํธํด๋ฆฌ์ค๋ฅผ ๋ณด์ ํ ๋๊ธฐ์ ์์ ์ ํธํ๋ ์ต์ ์๋ ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋๋ง๋ค ํ์ด์ง๊ฐ ์์ ํ ๋ค์ ๋ก๋๋์ง ์์. ๋๋ถ๋ถ์ ์ฑ ๋ฆฌ์์ค๋ฅผ ํ ๋ฒ๋ง ๋ก๋ํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฆ. ์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ฑฐ๋ ์น์ฌ์ดํธ์ ๋ค๋ฅธ ๋ถ๋ถ์ผ๋ก ์ด๋ํ ๋๋ง๋ค ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ฒด ํ์ด์ง๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๋ก๋ํด์ผ ํ๋ฏ๋ก ๋๋ฆผ Coupling ํ๋ฐํธ์๋์ ๋ฐฑ์๋๊ฐ ๋ถ๋ฆฌ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ฒ ์ธก.. JavaScript์ ES๋?, ES5/ES6 ๋ฌธ๋ฒ ์ฐจ์ด ๐จJavaScript ๐ป JavaScript์ ES๋? 1996๋ ์ ECMA(European Computer Manufacturers Association) International์ด๋ผ๋ ํ์ค ์กฐ์ง์ ๋ชจ๋ โโ๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ์ฒด๊ฐ ๊ตฌํํ ์ ์๋ ECMAScript(ES)๋ผ๋ ํ์ค ์ฌ์์ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Javascript๋ ES์ ๊ฐ์ฅ ์ ์๋ ค์ง ๊ตฌํ์ด๋ฉฐ ActionScript(Macromedia/Adobe Systems)์ JScript(Microsoft)๋ ES์ ๋ค๋ฅธ ๊ตฌํ์ ๋๋ค. ES์ ๋ฒ์ ๋ชฉ๋ก: ํ์ฌ๊น์ง ES๋ 9๊ฐ์ ๋ฒ์ ์ ์ถํํ์ผ๋ฉฐ ์ต์ ๋ฒ์ (9๋ฒ์งธ ๋ฒ์ )์ 2018๋ ์ ์ถํ๋์์ต๋๋ค. ES1 1997 ES2 1998 ES3 1999 ES4 ํฌ๊ธฐ ES5 2009 ES6 2015 ES7 .. ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด(JavaScript) ๐จJavaScript ๐ป JavaScript์ ์๋ฃํ๊ณผ JavaScript๋ง์ ํน์ฑ์ ๋ฌด์์ผ๊น ? 1. ๋์จํ ํ์ (loosely typed)์ ๋์ (dynamic) ์ธ์ด JavaScript์ ๋ณ์๋ ์ด๋ค ํน์ ํ์ ๊ณผ ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉฐ, ๋ชจ๋ ํ์ ์ ๊ฐ์ผ๋ก ํ ๋น (๋ฐ ์ฌํ ๋น) ๊ฐ๋ฅํจ. let foo = 42 // foo๊ฐ ์ซ์ foo = 'bar' // foo๊ฐ ์ด์ ๋ฌธ์์ด foo = true // foo๊ฐ ์ด์ ๋ถ๋ฆฌ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ค๋ฅธ ์ ํ์ ๊ฐ์ฒด ๋ฐ ๋ณ์์ ๋ํ ๋ช ์์ ์ฌ์์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ ๋์จํ ์ ํ ๋๋ ์ฝํ ์ ํ. ์ฝํ ํ์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ "๋์จํ" ํ์ ์ง์ ๊ท์น์ ์๋ชป๋๊ฑฐ๋ ์์ธกํ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ์ ์์. ๋์ ์ธก๋ฉด๋ง ์๋ ๊ฒ์ด ์๋๋ผ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ๋์ ์ด๊ธฐ ๋๋ฌธ์.. ์ด์ 1 ๋ค์