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

๐Ÿ“‚ ๊ธฐ์ˆ  ๋ฉด์ ‘20

JavaScript ์ฝ”๋“œ๋ฅผ HTML๋ณด๋‹ค ๋ฐ‘์— ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป JavaScript ์ฝ”๋“œ๋ฅผ HTML๋ณด๋‹ค ๋ฐ‘์— ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”? ์•Œ๋ฆผ์ฐฝ Open ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ณ , DOM ์กฐ์ž‘ ๋ฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 1. ๋กœ๋”ฉ ์ˆœ์„œ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” HTML ๋ฌธ์„œ๋ฅผ ์œ„์—์„œ ์•„๋ž˜๋กœ ํŒŒ์‹ฑํ•˜๋ฉฐ ๋กœ๋”ฉํ•˜๋Š”๋ฐ, HTML ๋ฌธ์„œ ๋‚ด์— ์žˆ๋Š” ์š”์†Œ๋“ค์„ ๋งŒ๋‚˜๋ฉด ํ•ด๋‹น ์š”์†Œ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ HTML ๋ฌธ์„œ์— ํฌํ•จ๋œ JavaScript ์ฝ”๋“œ๋„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ JavaScript ์ฝ”๋“œ๊ฐ€ HTML๋ณด๋‹ค ์œ„์— ์œ„์น˜ํ•œ๋‹ค๋ฉด, HTML ํŒŒ์‹ฑ ์ค‘์—๋„ JavaScript ์ฝ”๋“œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €๋Š” JavaScript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด HTML ํŒŒ์‹ฑ์„ ์ค‘๋‹จํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜.. 2023. 8. 29.
TypeScript๋Š” ์ •ํ™•ํžˆ ๋ฌด์—‡์ด๋ฉฐ JavaScript์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ๊ฐ€์š”? ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์งˆ๋ฌธ ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , TypeScript๋Š” Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, JavaScript์˜ ํ™•์žฅ๋œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. TypeScript๋Š” ์ •์  ํƒ€์ž…์„ ์ง€์›ํ•˜๋Š” ์–ธ์–ด๋กœ, ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํƒ€์ž… ์•ˆ์ •์„ฑ๊ณผ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. JS vs. TS JavaScript๋Š” ๋™์  ํƒ€์ž… ์–ธ์–ด๋กœ, ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์œ ์—ฐ์„ฑ๊ณผ ๊ฐ„ํŽธํ•จ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ํƒ€์ž… ์—๋Ÿฌ์˜ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์งˆ ์ˆ˜ ์žˆ๊ณ , ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜์˜ ์–ด๋ ค์›€์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— TypeScript๋Š” ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ๊ฐ์ฒด ๋“ฑ์— ๋ช…์‹œ์ ์ธ ํƒ€์ž…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ํƒ€์ž… ์ฒดํฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด, ํƒ€์ž… ๊ด€๋ จ ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ• .. 2023. 6. 8.
Virtual DOM์ด๋ž€? ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ ์‹œ ์žฅ์ ์€? ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Virtual DOM์ด ๋ฌด์—‡์ด๊ณ , Virtual DOM์ด ์–ด๋–ค ๋ฉด์—์„œ ์ข‹์€๊ฐ€์š”? ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , React์˜ ๊ฐ€์ƒ DOM์€ ์‹ค์ œ DOM๊ณผ ์œ ์‚ฌํ•œ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋ณต์‚ฌ๋ณธ์ด๋ฉฐ, ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ Œ๋”๋ง์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒ DOM์„ ๋จผ์ € ์„ค๋ช…ํ•˜์ž๋ฉด, React๋Š” ๋ณ€๊ฒฝ ์ด์ „๊ณผ ๋ณ€๊ฒฝ ์ดํ›„์˜ ๋‘ ๊ฐœ์˜ ๊ฐ€์ƒ DOM์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฐ€์ƒ DOM์€ ๋ณ€๊ฒฝ ์ด์ „์˜ ๋‚ด์šฉ์„, ๋‘ ๋ฒˆ์งธ ๊ฐ€์ƒ DOM์€ ๋ณ€๊ฒฝ ์ดํ›„์— ๋ณด์—ฌ์งˆ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์ด ํ™”๋ฉด์— ์ƒˆ๋กญ๊ฒŒ ๊ทธ๋ ค์ง€๊ธฐ ์ „, ์ฆ‰ ์‹ค์ œ DOM์ด ๋ณ€๊ฒฝ๋˜๊ธฐ ์ด์ „์— React๋Š” ๋‘ ๊ฐœ์˜ ๊ฐ€์ƒ DOM์„ ๋น„๊ตํ•˜์—ฌ ์–ด๋–ค ๋ถ€๋ถ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํšจ์œจ์ ์œผ๋กœ ์ฐพ์•„๋‚ด๋Š” ์ž‘์—…(๋˜๋Š” Diffing)์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, React๋Š” ๋ถ€๋ชจ ์š”์†Œ์˜ ํƒ€์ž…์ด ๋ณ€๊ฒฝ๋˜๋ฉด .. 2023. 6. 8.
์žฌ๊ท€๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์ข‹์€ ์ƒํ™ฉ์€ ์–ธ์ œ์ธ์ง€ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์žฌ๊ท€๋ฅผ ํ™œ์šฉํ•˜๊ธฐ ์ข‹์€ ์ƒํ™ฉ์€ ์–ธ์ œ์ธ์ง€ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , ์žฌ๊ท€ ํ•จ์ˆ˜(Recursive function)๋Š” ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ์ƒํ™ฉ์€ ์„ธ ๊ฐ€์ง€ ์ •๋„๋กœ ์ด์•ผ๊ธฐํ•ด๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1. ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๋น„์Šทํ•œ ๊ตฌ์กฐ์˜ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•˜์œ„ ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์ด ์ƒ์œ„์— ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ์—๋„ ์ด์–ด์ง€๋Š” ๊ฒฝ์šฐ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ n๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ n๋ฒˆ์งธ ์ˆ˜๋Š” n-1๋ฒˆ์งธ ์ˆ˜์™€ n-2๋ฒˆ์งธ ์ˆ˜๋ฅผ ํ•ฉํ•œ ๊ฐ’์ด๋ฏ€๋กœ, ๋ช‡ ๋ฒˆ์งธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋“  ๋™์ผํ•œ ๊ตฌ์กฐ์˜ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ.. 2023. 5. 9.
Semantic HTML์˜ ํ•„์š”์„ฑ์„ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Semantic HTML์˜ ํ•„์š”์„ฑ์„ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , Semantic HTML์€ ์›น ํŽ˜์ด์ง€์˜ ๊ฐ ์š”์†Œ์— ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•˜๋Š” HTML ๋งˆํฌ์—… ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์›น ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ์™€ ์˜๋ฏธ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋ฉฐ, ๊ฒฐ๊ตญ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)์™€ ์›น ์ ‘๊ทผ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HTML ์•ˆ์— ์ œ๋ชฉ, ๋‚ด์šฉ, ํ‘ธํ„ฐ๋กœ ๋‚ด์šฉ์ด ๋‚˜๋ˆ ์ ธ ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ชจ๋“  ์š”์†Œ๋ฅผ ํƒœ๊ทธ๋กœ ์”Œ์šด๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ์›น ํŽ˜์ด์ง€ ๊ตฌ์กฐ์™€ ์˜๋ฏธ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ๋ณด์ด์ง€ ์•Š์„ ๋ฟ ์•„๋‹ˆ๋ผ, ์šฐ๋ฆฌ๊ฐ€ ์• ์จ ๋งŒ๋“  ์›น ์‚ฌ์ดํŠธ๊ฐ€ ๊ฒ€์ƒ‰ ์—”์ง„์— ์ตœ์ ํ™”๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ๋ชฉ ๋‚ด์šฉ ๋”ฐ๋ผ์„œ, HTML์˜ ๊ฐ ์˜์—ญ์€ ๊ฐ ์˜์—ญ์˜ ์˜๋ฏธ์— ๋งž๊ฒŒ ์š”์†Œ๋Š” ์›น ํŽ˜์ด์ง€์˜ ์ œ๋ชฉ, ์š”์†Œ๋กœ๋Š” ์„น์…˜์„ ์ •์˜, ์š”์†Œ๋กœ๋Š” .. 2023. 5. 9.
HTTP ๋ฉ”์„ธ์ง€ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป HTTP ๋ฉ”์„ธ์ง€ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , HTTP ๋ฉ”์‹œ์ง€๋Š” ํฌ๊ฒŒ start line, HTTP header, empty line, body๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€์˜ ๊ตฌ์กฐ 1. start-line ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ํ•ญ์ƒ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์–ด๋–ค HTTP ๋ฉ”์„œ๋“œ์ธ์ง€, ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋ฌด์—‡์ธ์ง€ ๋“ฑ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 2. HTTP header ์š”์ฒญ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ๋ฉ”์‹œ์ง€์— ํฌํ•จ๋œ ๋ณธ๋ฌธ์„ ์„ค๋ช…ํ•˜๋Š” ํ—ค๋”์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. 3. empty line ํ—ค๋”์™€ ๋ณธ๋ฌธ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋นˆ ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค. 4. body ์š”์ฒญ๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋‚˜ ์‘๋‹ต๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ ๋˜๋Š” ๋ฌธ์„œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ์œ ํ˜•์— ๋”ฐ๋ผ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š”๋ฐ์š”. GET, DELETE,.. 2023. 4. 10.
GET ๋ฉ”์„œ๋“œ์™€ POST ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป GET ๋ฉ”์„œ๋“œ์™€ POST ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , GET์€ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๊ณ , POST๋Š” ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ž…๋‹ˆ๋‹ค. GET๊ณผ POST ์š”์ฒญ์—๋Š” ๊ฐ๊ฐ ์–ด๋–ป๊ฒŒ ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‚˜์š”? GET์€ ๋‹จ์ˆœํžˆ ์กฐํšŒ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— body๋ฅผ ๋ณด๋‚ด์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋ณดํŽธ์ ์ด๊ธฐ์— query parameter๋‚˜ path parameter๋ฅผ ์”๋‹ˆ๋‹ค. POST ์š”์ฒญ์—์„œ๋Š” ์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ HTTP body์— ๋‹ด์•„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์š”์ฒญ์˜ ํŠน์ง•์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? GET์€ ์š”์ฒญ์„ ๋ฌดํ•œ๋Œ€๋กœ ๋ณด๋‚ด๋„ ๊ฐ™์€ ์š”์ฒญ์„ ํšŒ์‹ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ฉฑ๋“ฑ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด POST๋Š” ์š”์ฒญ์„ ๋ฌดํ•œ๋Œ€๋กœ ๋ณด๋‚ด๋ฉด ์ตœ์ดˆ ์‘๋‹ต๊ณผ๋Š” ๋‹ค๋ฅธ ํšŒ์‹ ์„ ๋ฐ›๊ฒŒ.. 2023. 4. 10.
useEffect์˜ dependency array์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป useEffect์˜ dependency array์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , useEffect๋ž€, ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ›…์ž…๋‹ˆ๋‹ค. useEffect๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋ฐ›๊ณ , ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ ๋ฐฐ์—ด์„ ๋ฐ›๋Š”๋ฐ, ์ด ๋ฐฐ์—ด์„ dependency array ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. dependency array๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ์ข…์†์„ฑ ๋ฐฐ์—ด์ด๋ผ ๋ถ€๋ฅด๋Š” ์ด์œ ๋Š” useEffect์˜ ์‹คํ–‰์ด ํ™”๋ฉด์— ์ฒ˜์Œ ๋ Œ๋”๋ง ๋  ๋•Œ ๊ทธ๋ฆฌ๊ณ  ์ข…์†์„ฑ ๋ฐฐ์—ด์˜ value ๊ฐ’์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋นˆ ๋ฐฐ์—ด์ด ์ „๋‹ฌ๋œ๋‹ค๋ฉด ์ฒซ ๋ Œ๋”๋ง๋  ๋•Œ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. useEffect์— dependency array๋ฅผ ์ฃผ์ง€ ์•Š์œผ๋ฉด, ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง์ด ๋ฉ๋‹ˆ๋‹ค. .. 2023. 4. 10.
React ์ปดํฌ๋„ŒํŠธ์˜ key ์†์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป React ์ปดํฌ๋„ŒํŠธ์˜ key ์†์„ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. React์—์„œ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋ง ํ•  ๋•Œ, key ๊ฐ’์„ ๋„ฃ์–ด๋‹ฌ๋ผ๋Š” console ์—๋Ÿฌ๊ฐ€ ์ž์ฃผ ๋œจ๋Š”๋ฐ์š”. ์ด๋•Œ ์ด key ๊ฐ’์ด ์–ด๋– ํ•œ ์—ญํ• ์„ ํ• ๊นŒ์š”? ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , key๋Š” React๊ฐ€ ์–ด๋–ค ํ•ญ๋ชฉ์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ• ์ง€ ๋˜๋Š” ์‚ญ์ œํ• ์ง€ ๊ตฌ๋ณ„ํ•˜๋„๋ก ๋•๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. key๋Š” ์—˜๋ฆฌ๋จผํŠธ์— ์•ˆ์ •์ ์ธ ๊ณ ์œ ์„ฑ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐ์—ด ๋‚ด๋ถ€์˜ ์—˜๋ฆฌ๋จผํŠธ์— ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. key ์†์„ฑ์€ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ Œ๋”๋งํ•  ๋•Œ, ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์ž„์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์ธ๋ฐ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, 10๊ฐœ์˜ ํŠธ์œ— ์ค‘ ํ•˜๋‚˜์˜ ํŠธ์œ—๋งŒ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ํ•ด๋‹น ํŠธ์œ—๋งŒ ์žฌ๋ Œ๋”๋งํ•˜๊ณ , ๋‹ค๋ฅธ 9๊ฐœ์˜ ํŠธ์œ—์€ ๊ทธ๋Œ€๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ key ์†์„ฑ์„ ํ™œ์šฉํ•˜.. 2023. 4. 10.
Promise์˜ ๊ธฐ๋Šฅ๊ณผ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Promise์˜ ๊ธฐ๋Šฅ๊ณผ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ’๐Ÿป‍โ™€๏ธ ํ”„๋กœ๋ฏธ์Šค๋ž€, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ž€, ํŠน์ • ์ฝ”๋“œ์˜ ์‹คํ–‰์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์„ฑ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋ฏธ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ํ”„๋กœ๋ฏธ์Šค๋Š” ์ฃผ๋กœ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌํ˜„ํ•  ๋•Œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด API๋ฅผ ํ™œ์šฉํ•˜๋Š”๋ฐ, API๊ฐ€ ์‹คํ–‰๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ๋„ ์ „์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ๋ฐ›์•„์˜จ ๊ฒƒ์ฒ˜๋Ÿผ ํ™”๋ฉด์— ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋นˆ ํ™”๋ฉด์ด ๋œน๋‹ˆ๋‹ค. ์ด๋•Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ํ”„๋กœ๋ฏธ์Šค์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ํ”„๋กœ๋ฏธ์Šค๋Š” ์ตœ์ข… ๊ฒฐ.. 2023. 4. 10.
์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋ถˆ๋ณ€์„ฑ๊ณผ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋ถˆ๋ณ€์„ฑ๊ณผ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ์—†๋Š” ํ•จ์ˆ˜, ์ฆ‰ ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์™ธ๋ถ€์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋ฅผ ๋œปํ•˜๊ณ , ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ๋ถˆ๋ณ€์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋Š” ์–ด๋– ํ•œ ์ „๋‹ฌ์ธ์ž๊ฐ€ ์ฃผ์–ด์ง€๋”๋ผ๋„ ํ•ญ์ƒ ๋˜‘๊ฐ™์€ ๊ฐ’์ด ๋ฆฌํ„ด๋จ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ž€? ํ•จ์ˆ˜์˜ ์ž…๋ ฅ ์™ธ์—๋„ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์š”์ธ ์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ์š”์ฒญ, API ํ˜ธ์ถœ์ด Side Effect์ž…๋‹ˆ๋‹ค. ์ˆœ์ˆ˜ํ•จ์ˆ˜ ๊ฐœ๋…์ด ์ค‘์š”ํ•œ ์ด์œ ๋Š”? ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ค„์ด๊ณ , ๋ชจ๋“ˆํ™” ์ˆ˜์ค€์„ ๋†’์ด๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง•, ์ฆ‰ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋Š” ํ‰๊ฐ€ ์‹œ์ ์ด ๋ฌด๊ด€ํ•˜๋‹ค๋Š” ํŠน์ง•์œผ๋กœ ์ธํ•ด ํšจ์œจ์ ์ธ ๋กœ์ง์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ .. 2023. 4. 10.
SOP์™€ CORS์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Same-Origin Policy์™€ CORS์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. ๐Ÿ’๐Ÿป‍โ™€๏ธ ์š”์•ฝํ•˜์ž๋ฉด , SOP๋Š” '๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…'์œผ๋กœ, ๊ฐ™์€ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค๋งŒ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ •์ฑ…์ด๋ฉฐ, CORS๋Š” '๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ ' ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” SOP์— ์˜ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ ๋ฅผ ๋ง‰์ง€๋งŒ, CORS ์„ค์ •์„ ํ†ตํ•ด ์ ‘๊ทผ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SOP(Same-Origin Policy) SOP์˜ ์ถœ์ฒ˜๋Š” ํ”„๋กœํ† ์ฝœ, ํ˜ธ์ŠคํŠธ, ํฌํŠธ์˜ ์กฐํ•ฉ์œผ๋กœ ๋˜์–ด ์žˆ๋Š”๋ฐ, ์ด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋‹ค๋ฅด๋ฉด ๋™์ผํ•œ ์ถœ์ฒ˜๋กœ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋•๋ถ„์— ์ž ์žฌ์ ์œผ๋กœ ํ•ด๋กœ์šธ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๊ณต๊ฒฉ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์ค„์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ•ดํ‚น ๋“ฑ์˜ ์œ„ํ˜‘์œผ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๋Š” SOP ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๊ณ .. 2023. 4. 5.