๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ด๋…ธ๋ฒ ์ด์…˜์บ ํ”„/์ง€์‹์Œ“๊ธฐ

(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๊ฐ€ ์ด์ œ ๋ถˆ๋ฆฌ์–ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๊ฐœ์ฒด ๋ฐ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๋ช…์‹œ์  ์‚ฌ์–‘์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋А์Šจํ•œ ์œ ํ˜• ๋˜๋Š” ์•ฝํ•œ ์œ ํ˜•. ์•ฝํ•œ ํ˜•์‹์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ "๋А์Šจํ•œ" ํ˜•์‹ ์ง€์ • ๊ทœ์น™์€ ์ž˜๋ชป๋˜๊ฑฐ๋‚˜ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ. ๋™์  ์ธก๋ฉด๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์ด ๋™์ ์ด๊ธฐ ๋•Œ๋ฌธ์—..