Jieunny์˜ ๋ธ”๋กœ๊ทธ

Section 2. [๊ธฐ์ˆ  ๋ฉด์ ‘] ๋ณธ๋ฌธ

CodeStates/learning contents

Section 2. [๊ธฐ์ˆ  ๋ฉด์ ‘]

Jieunny 2023. 2. 10. 12:00

๐Ÿ“Œ JavaScript

โœ”๏ธ Promise์˜ ๊ธฐ๋Šฅ๊ณผ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ Promise๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋กœ, ์ฝœ๋ฐฑ ํŒจํ„ด์ด ๊ฐ€์ง„ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๋ฉฐ ๋น„๋™๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ ๋น„๋™๊ธฐ๋ž€, ํŠน์ • ์ฝ”๋“œ์˜ ์‹คํ–‰์ด ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

โžฐ Promise๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝœ๋ฐฑ์„ ์ค‘์ฒฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜์˜€์„ ๋•Œ ์ผ์–ด๋‚˜๋Š” ์ฝœ๋ฐฑ์ง€์˜ฅ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ Promise๋Š” ๋ณดํ†ต ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

โžฐ Promise๋Š” ๋Œ€๊ธฐ, ์ดํ–‰, ๊ฑฐ๋ถ€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฉฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ resolve์™€ reject ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

โžฐ Promise๊ฐ€ ์ดํ–‰ ์ƒํƒœ์ธ ๊ฒฝ์šฐ resolve ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ๊ฑฐ๋ถ€ ์ƒํƒœ์ธ ๊ฒฝ์šฐ reject ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

โžฐ then, catch, finally๋ฅผ ํ†ตํ•ด ์ƒํƒœ์— ๋”ฐ๋ฅธ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ”๏ธ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? ๋ถˆ๋ณ€์„ฑ๊ณผ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ž€ ์˜ค์ง ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๋งŒ์ด ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ํ•จ์ˆ˜๋กœ, ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โžฐ ์—ฌ๊ธฐ์„œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ž€ ํ•จ์ˆ˜ ์™ธ๋ถ€์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋กœ ๋“ค์–ด์˜จ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋งํ•˜๋ฉฐ, ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ์—†๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

โžฐ ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ, ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ๋งํ•˜๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด ํ•จ์ˆ˜๋Š” ์ˆœ์ˆ˜ํ•จ์ˆ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“Œ React

โœ”๏ธ React์˜ state์™€ props์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ state๋Š” ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์œผ๋กœ, useState ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์„ ์–ธํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ props๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ์ฃผ๋Š” ๋ฐ์ดํ„ฐ๋กœ, ์ง์ ‘์ ์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

โœ”๏ธ React ์ปดํฌ๋„ŒํŠธ์˜ key ์†์„ฑ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ key๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ํฌํ•จํ•ด์•ผ ํ•˜๋Š” ๊ณ ์œ ํ•œ ๊ฐ’์œผ๋กœ, ๋ฆฌ์•กํŠธ๊ฐ€ ํ•„์š”ํ•œ ์š”์†Œ๋งŒ ๋ฆฌ๋ Œ๋”๋ง ํ•˜๋Š” ๊ฒƒ์„ ๋•์Šต๋‹ˆ๋‹ค.

โžฐ ๋ช…์‹œ์ ์œผ๋กœ key๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ธ๋ฑ์Šค๋ฅผ key๋กœ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋Š” ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

โžฐ key ๊ฐ’์ด ๊ฒน์ณ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— key๋Š” ํ•ญ์ƒ ๊ณ ์œ ํ•œ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โœ”๏ธ useEffect์˜ dependency array์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ useEffect๋Š” ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋ฐ›๊ณ  ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ ๋ฐฐ์—ด์„ ๋ฐ›๋Š”๋ฐ ์ด ๋ฐฐ์—ด์„ dependency array ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

โžฐ dependency array๊ฐ€ ๋นˆ ๋ฐฐ์—ด์ด๋ผ๋ฉด useEffect๋Š” ์ฒ˜์Œ ๋ Œ๋”๋ง ๋  ๋•Œ๋งŒ ์‹คํ–‰๋˜๋ฉฐ, ํŠน์ • state์˜ ๊ฐ’์ด ๋“ค์–ด์˜ค๋ฉด ๊ทธ state์˜ ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ ๋งˆ๋‹ค useEffect๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

โžฐ dependency array๋ฅผ ํ†ตํ•ด ํŠน์ • state์— ๋Œ€ํ•ด side effect๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ“Œ HTTP/๋„คํŠธ์›Œํฌ

โœ”๏ธ CSR๊ณผ SSR์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ CSR์€ ์ตœ์ดˆ ๋กœ๋“œ ์‹œ ํ•„์š”ํ•œ ํŒŒ์ผ์„ ๋ชจ๋‘ ๋ฐ›๊ณ , ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ์ž‘์šฉ์— ๋”ฐ๋ผ ํด๋ผ์ด์–ธํŠธ๋‹จ์—์„œ ๋ฐ›์•„์™€ ๋ Œ๋”๋ง ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

โžฐ SSR์€ ์š”์ฒญ์‹œ๋งˆ๋‹ค ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

โžฐ ์›น ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ์‹œ๊ฐ„, ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”, ์„œ๋ฒ„ ์ž์› ์‚ฌ์šฉ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์— ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ CSR์˜ ๊ฒฝ์šฐ HTML, CSS์™€ ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ธธ๊ณ , SSR์€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์˜ HTML๊ณผ ์Šคํฌ๋ฆฝํŠธ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๋น„๊ต์  ๋น ๋ฆ…๋‹ˆ๋‹ค.

โžฐ ๋‚˜๋จธ์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„์€ CSR์ด ๋น„๊ต์  ๋น ๋ฆ…๋‹ˆ๋‹ค.

โžฐ CSR์˜ ๊ฒฝ์šฐ ๋™์ ์œผ๋กœ ์ปจํ…์ธ ๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„์— ์ตœ์ ํ™” ๋˜์ง€ ์•Š๊ณ , SSR์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„œ๋ฒ„์—์„œ ์ปดํŒŒ์ผ๋˜์–ด ํด๋ผ์ด์–ธํŠธ๋กœ ๋„˜์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„์— ์ตœ์ ํ™” ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ CSR์€ ํด๋ผ์ด์–ธํŠธ์— ํ•œ๋ฒˆ์— ์š”์ฒญ์„ ๋ชฐ์•„์ฃผ๊ณ  ๊ทธ ํ›„๋กœ๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐฑ์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ ๊ณ , SSR์€ ๋งค๋ฒˆ ์„œ๋ฒ„์— ์š”์ฒญ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ž์›์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โœ”๏ธ GET ๋ฉ”์„œ๋“œ์™€ POST ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ GET์€ ์„œ๋ฒ„์—์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ ์–ด๋–  ๊ฐ’์ด๋‚˜ ๋‚ด์šฉ, ์ƒํƒœ ๋“ฑ์„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โžฐ ์š”์ฒญ์„ ์ „์†กํ•  ๋•Œ URL ์ฃผ์†Œ ๋์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋‹ด์€ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์„ ํฌํ•จํ•˜์—ฌ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

โžฐ GET์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜, ๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

โžฐ POST๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด๋‚˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

โžฐ GET๊ณผ ๋‹ฌ๋ฆฌ ์ „์†ก ํ•  ๋ฐ์ดํ„ฐ๋ฅผ HTTP body์— ๋‹ด์•„์„œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“Œ ์›น์„œ๋ฒ„ ๊ธฐ์ดˆ

โœ”๏ธ HTTP ๋ฉ”์„ธ์ง€ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ HTTP ๋ฉ”์‹œ์ง€๋Š” ๋ช‡ ์ค„์˜ ํ…์ŠคํŠธ ์ •๋ณด๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ start line, headers, body๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ start line์€ ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ ํ•ญ์ƒ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต์—์„œ๋Š” status line ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

โžฐ headers๋Š” ์š”์ฒญ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ๋ฉ”์‹œ์ง€์— ํฌํ•จ๋œ ๋ณธ๋ฌธ์„ ์„ค๋ช…ํ•˜๋Š” ํ—ค๋”์˜ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

โžฐ body๋Š” ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ ๋˜๋Š” ๋ฌธ์„œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

โœ”๏ธ Same-Origin Policy์™€ CORS์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ SOP๋Š” ๊ฐ™์€ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค๋งŒ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ •์ฑ…์ด๋ฉฐ, CORS๋Š” ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค๋„ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ •์ฑ…์ž…๋‹ˆ๋‹ค.

โžฐ ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‚˜๋Š” CORS์—๋Ÿฌ๋Š” ๊ฒฐ๊ตญ SOP ๋•Œ๋ฌธ์ด๋ฉฐ ์ด๋Š” CORS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ CORS๋Š” ์‹ค์ œ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์ „ ํ”„๋ฆฌํ”Œ๋ผ์ดํŠธ ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ํ•ด๋‹น ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿšจ ์˜ˆ์‹œ์— ๋Œ€ํ•ด ๋” ์ค€๋น„ํ•˜์ž