Jieunny์ ๋ธ๋ก๊ทธ
Section 2. [๊ธฐ์ ๋ฉด์ ] ๋ณธ๋ฌธ
๐ 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๋ ์ค์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ํ๋ฆฌํ๋ผ์ดํธ ์์ฒญ์ ๋ณด๋ด์ ํด๋น ์ถ์ฒ ๋ฆฌ์์ค์ ์ ๊ทผ ๊ถํ์ด ์๋์ง ํ์ธํฉ๋๋ค.
๐จ ์์์ ๋ํด ๋ ์ค๋นํ์
'CodeStates > learning contents' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
S3) Unit 1. [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] JSON.stringify (0) | 2023.02.14 |
---|---|
S3) Unit 1. [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] ์ฌ๊ท (0) | 2023.02.13 |
S2) Unit 10. [Web Server] Refactor Express (0) | 2023.02.07 |
S2) Unit 10. [Web Server] CORS (0) | 2023.02.06 |
S2) Unit 9. [React] Effect Hook (0) | 2023.02.02 |