์ ์ฒด ๊ธ
-
๊ฒ์ฆ๋ UI ํจํด์ ์ด์ฉํด ๋ฆฌ์กํธ ์ดํ๋ฆฌ์ผ์ด์ ๋ง๋ค๊ธฐ์นดํ ๊ณ ๋ฆฌ ์์ 2024. 2. 7. 17:01
https://martinfowler.com/articles/modularizing-react-apps.html#ApartFromTheUserInterface ์ ๊ธ์ ์ฝ๊ณ ๋ฒ์ญ ๋ฐ ํ์ตํ ๋ด์ฉ์ด๋ค. ์ด ๊ธ์ ์ ๋ชฉ์์ ‘๋ฆฌ์กํธ ์ดํ๋ฆฌ์ผ์ด์ ’์ด๋ ํํ์ ์ฌ์ฉํ์ง๋ง, ์ฌ์ค ๋ฆฌ์กํธ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ ๊ฒ์ ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ํน์ ํ์ ์คํฌ๋ฆฝํธ๋ก ์์ฑํ๊ณ ๋ฆฌ์กํธ๋ฅผ ๋ทฐ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด ์ฌ์ฉํ ํ๋ก ํธ์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์์ ๋ฟ์ด๋ค. ์ข ์ข , ์ฌ๋๋ค์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ ํ ์ค์ ๋ค์ํ ๊ฒ๋ค์ ์ฑ์ฌ๋ฃ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋์๊ฐ๋๋ก ํ๋ค. ์ด๋ ๊ฒ ๋ ์ ๋ฆฌ๋ ๊ตฌ์กฐ๋ค์ ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ง์ง ์์ ๋์๋ ๊ด์ฐฎ์ ์ ์๋ค. ๊ทธ๋ฌ๋, ์์ฆ๊ฐ์ด ๋ ๋ง์ ๋น์ฆ๋์ค ๋ก์ง๋ค์ด ํ๋ก ํธ์๋๋ก ๋์ด์จ ์์ ์์๋, ๋ชจ๋ ๊ฒ์ ์ปดํฌ๋ํธ..
-
Nextjs ์์ fetch ์ปค์คํ ํ์ฌ ์ฌ์ฉํ๊ธฐ(feat. ์ด์ค ํ์ดํ ํจ์)์นดํ ๊ณ ๋ฆฌ ์์ 2024. 2. 4. 19:50
์ง๋๋ฒ์ https://minju-k.tistory.com/15 ์์ Next.js ๋ ๋ค์ํ ์บ์ฑ ์ต์ ์ ๊ฐ์ง๊ณ ์๋ fetch๋ฅผ ์ด์ฉํ๊ธธ ๊ถ์ฅํ๋ ๊ฒ์ ์์๋ณด์๋ค. ์ด ๊ธ์์๋ ๊ทธ๋์ ์ด๋ป๊ฒ ํ๋ก์ ํธ์ fetch๋ฅผ ์ฌ์ฉํ๋ฉด์๋ axios๋ฅผ ์ธ ๋์ฒ๋ผ์ ์ด์ ์ ๋๋ฆฌ๋๋ก ํ๋์ง ๊ธ์ ์จ๋ณด๊ธฐ๋ก ํ๋ค. ๋ง๋ค ๋์๋ ์๋์ ๋ ํผ๋ฐ์ค๋ก ๊ฑธ์ด๋์ return-fetch ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์๋ค. axios๋ fetch์ ๋ฐํด ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ๊ฐ์ง๊ณ ์๋ค. - ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ serialize, deserialize ํ ํ์๊ฐ ์์ด ๊ฐ์ฒด ํํ๋ก ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค. - baseUrl์ ์ค์ ํ ์ ์๋ค. - default header๋ฅผ ์ค์ ํ ์ ์๋ค. - request, response interce..
-
axios์ fetch, ๊ทธ๋ฆฌ๊ณ Next๋ ์ fetch ์ฌ์ฉ์ ๊ถ์ฅํ ๊น?์นดํ ๊ณ ๋ฆฌ ์์ 2024. 1. 14. 23:42
์ต๊ทผ์ ํ์ฌ์์ Next14๋ก ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋๋ฉด์, ๊ณต์๋ฌธ์์์ ์ค๋ช ํ๊ณ ์๋ native fetch API๋ฅผ ํ์ฅํ fetch๋ฅผ ์ฌ์ฉํ ์ง, axios ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ง์ ๋ํ ๊ณ ๋ฏผ์ ๋ถ๋ชํ๊ฒ ๋์๋ค. ๋งจ ์ฒ์์ fetch๋ฅผ ์ฌ์ฉํ๋ค๊ฐ axios๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ ๋, ์ ๋ง ์ ๋ง ํธ๋ฆฌํจ์ ๋๊ผ์๋๋ฐ, ๋ ์ฌ์ด์ ์ ํํ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ์์ธํ ์์ง ๋ชปํด ๊ธฐ์ ๊ฒฐ์ ์ ๋ชป ๋ด๋ฆฌ๊ณ ์๋ ์์ ์ ๋ฐ๊ฒฌํ๊ฒ ๋์๋ค. ๊ทธ๋ฆฌํ์ฌ ๋ ์ฌ์ด ์ฐจ์ด์ ์ ์ดํด๋ณด๊ธฐ๋ก ํ๋ค. Axios๋ ? Axios๋ node.js์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํ Promise ๊ธฐ๋ฐ HTTP ํด๋ผ์ด์ธํธ ์ ๋๋ค. ๊ทธ๊ฒ์ ๋ํ ์ ๋๋ค(๋์ผํ ์ฝ๋๋ฒ ์ด์ค๋ก ๋ธ๋ผ์ฐ์ ์ node.js์์ ์คํํ ์ ์์ต๋๋ค). ์๋ฒ ์ฌ์ด๋์์๋ ๋ค์ดํฐ๋ธ node.j..
-
hooks๋ ์ด๋ป๊ฒ closure์ ์ฌ์ฉํ๊ณ ์์๊น์นดํ ๊ณ ๋ฆฌ ์์ 2023. 6. 9. 18:39
hooks๊ฐ ํด๋ก์ ๋ฅผ ์ฌ์ฉํ ๊ฑฐ๋ผ๋๋ฐ, ๊ทธ๊ฒ ๋ฌด์จ์๋ฏธ์ผ๊น์? ๋ผ๋ ์ง๋ฌธ์ ๋ตํ์ง ๋ชปํ๋ค๋ฉด ๋ค์ ์์์ ๋ณผ ๊ฒ์ ์ถ์ฒํ๋ค. ํด๋ก์ ๋ถํฐ ๋ฆฌ์กํธ ๋ด๋ถ ๋์์ ํ์ํํ ๋ผ์ด๋ธ์ฝ๋ฉ์ ๋ณด๋ฉฐ ๋จ๊ณ๋ณ๋ก ๋ฆฌ์กํธ ํ ์ ๋ด๋ถ ์๋ฆฌ๋ฅผ ์ดํดํ๊ธฐ๊ฐ ์ข์๋ค. ์๋ฌธ์ ๋ธ๋ก๊ทธ๋ก ๋์ด ์๋๋ฐ, ๊ฒ์ํ๋ฉด ๋ฐ๋ก ๋์ค์ง๋ง ๋ฏธ๋์ ๋๋ฅผ ์ํด ๋ด ์ธ์ด๋ก ๋ค์ ํ ๋ฒ ์ ๋ฆฌํ๊ณ ์ ํ๋ค. ํด๋ก์ ๋? ๋จผ์ ํด๋ก์ ์ ๋ํด์ ์ง๋ฌธ์ ํตํด์ ์ ๋ฆฌํ๊ณ ๊ฐ๋ณด์. 1. ํด๋ก์ ๋? ํจ์์ ํจ์๊ฐ ์ ์ธ๋ ์ดํ์ ํ๊ฒฝ์ ์กฐํฉ์ด๋ค. 2. ํด๋ก์ ๋ฅผ ์ธ์ ์ฌ์ฉํ๋๊ฐ? ์ํ๊ฐ ์๋์น ์๊ฒ ๋ณ๊ฒฝ๋์ง ์๋๋ก ์ํ๋ฅผ ์์ ํ๊ฒ ์๋ํ๊ณ , ํน์ ํจ์์๊ฒ๋ง ์ํ ๋ณ๊ฒฝ์ ํ์ฉํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์ถ๊ฐ๋ก, ๋ถ๋ถ์ ์ฉ ๋๋ ์ปค๋งํจ์์ ์ฌ์ฉ๋๋ค. 3. ํด๋ก์ ์์ ํจ์๊ฐ ์คํ ์ข ๋ฃ๋์์์๋ ๋ณ์..
-
CORS์ SOP, ํด๊ฒฐ๋ฐฉ๋ฒ์?์นดํ ๊ณ ๋ฆฌ ์์ 2023. 3. 20. 01:20
CORS์ ๋ํด ์์๋ณด๊ธฐ ์ , ๋จผ์ SOP๋ฅผ ์์๋ด์ผ ํ๋ค. CORS๋ ๊ฒฐ๊ตญ SOP๊ฐ ์ง์ผ์ง์ง ์์์ ๋ ๋ฐ์ํ๋ ์ค๋ฅ์ด๊ธฐ ๋๋ฌธ์ด๋ค. SOP (Same-Origin-Policy) SOP๋ ๋ง ๊ทธ๋๋ก ๋์ผํ ์ถ์ฒ์์๋ง ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ ์ ์๋ค๋ ๊ท์น์ ๊ฐ์ง ์ ์ฑ ์ด๋ค. ๋ URL๊ฐ์ Scheme, Host, Port์ค ํ๋๋ผ๋ ๋ค๋ฅด๋ฉด SOP๋ฅผ ์๋ฐํ ๊ฒ์ด ๋๋ค. ์๋ ์์๋ก ๊ฐ์ Origin์ธ์ง ์กฐ๊ธ ๋ ์์๋ณด์ ๋์ ๋ธ๋ก๊ทธ ์ถ์ฒ์ธ https://minju-k.tistory.com/์ ์ถ์ฒ๋ฅผ ํ๋ฒ ๋น๊ตํด๋ณด์. CORS (Cross-Origin Resource Sharing) CORS๋ ๊ต์ฐจ ์ถ์ฒ ๋ฆฌ์์ค ๊ณต์ ๋ผ๊ณ ํด์ํ ์ ์๋๋ฐ, ๊ต์ฐจ ์ถ์ฒ๋ผ๋ ๊ฒ์ ๊ฒฐ๊ตญ ๊ฐ์ ์ถ์ฒ๊ฐ ์๋๋ผ๋ ๊ฒ์ด๋ค. ์์ ์ดํด๋ณธ SOP์ ..
-
์ฟ ํค์ ์ธ์ , ๊ทธ๋ฆฌ๊ณ ์ฟ ํค์ ์ต์ ๋ค์ ๋ํ์ฌ์นดํ ๊ณ ๋ฆฌ ์์ 2023. 3. 19. 22:51
1. ์ฟ ํค๋? ์ฟ ํค๋ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ ์์ ๋ฌธ์์ด๋ก ์ต๋ 4KB๊น์ง ์ ์ฅ๋ ์ ์๋ค. HTTP๋ ๋ฌด์ํ์ฑ(stateless)์ด๋ ํน์ง์ ๊ฐ์ง๊ณ ์๋๋ฐ, ๋ฐ๋ผ์ ์๋ฒ๋ ๋ ์์ฒญ์ด ๊ฐ์ ๋ธ๋ผ์ฐ์ ์์ ์ค๋์ง ์ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๊ธฐ ์น ์ํ๊ณ์์๋ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ ์์ฒญ์ ๋ํ response๋ก ์ด๋ค ํ ํฐ์ ๋๋ ค์ฃผ๊ณ ๋ค์ ์์ฒญ์์ ํด๋น ํ ํฐ์ ๊ฐ์ด ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฐ ๋ฌด์ํ์ฑ์ ํด๊ฒฐํด ์๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ก๊ทธ์ธ ์์ฒญ์ ํตํด ํ๋ฒ ๋ค์ด๋ฒ์ ์ธ์ฆ์ด ์ด๋ค์ง๊ณ ๋๋ฉด, ๋๋ ๋ค์ด๋ฒ ๋ด ์ค์ ํ์ด์ง๋ ๋ค์ด๊ฐ ์ ์๊ณ ์ฌ๋ฌ ๋ด๊ฐ ๊ฐ์ ํ ์นดํ์๋ ๋ค์ด๊ฐ ์ ์๋ ๋ฑ ๋ด ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ํ๋ํ ์ ์๋๋ฐ, ์ธ์ฆ ํ ์๋ฒ์์ ๋๋ ค๋ฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๋งค ์์ฒญ์ ์ค์ด ๋ณด๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ ์ด ์์ฒญ์..
-
ํด๋์ค์ ์์ฑ์ ํจ์์ ์ฐจ์ด์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 27. 01:20
TLDR; ํด๋์ค์ ์์ฑ์ ํจ์์ ์ฐจ์ด ํด๋์ค๋ ์์ฑ์ ํจ์๋ณด๋ค ์๊ฒฉํ๋ฉฐ, ์์ฑ์ ํจ์์์๋ ์ ๊ณตํ์ง ์๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค. ํด๋์ค๋ฅผ new ์ฐ์ฐ์ ์์ด ํธ์ถํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ํ์ง๋ง ์์ฑ์ ํจ์๋ฅผ new ์ฐ์ฐ์ ์์ด ํธ์ถํ๋ฉด ์ผ๋ฐ ํจ์๋ก์ ํธ์ถ๋๋ค. ํด๋์ค๋ ์์์ ์ง์ํ๋ extends์ super ํค์๋๋ฅผ ์ ๊ณตํ๋ค. ํด๋์ค๋ ํธ์ด์คํ ์ด ๋ฐ์ํ์ง ์๋ ๊ฒ์ฒ๋ผ ๋์ํ๋ค. ํด๋์ค ๋ด์ ๋ชจ๋ ์ฝ๋์๋ ์๋ฌต์ ์ผ๋ก strict mode๊ฐ ์ง์ ๋์ด ์คํ๋๋ค. ์์ฑ์ ํจ์๋ ์๋ฌต์ ์ผ๋ก strict mode๊ฐ ์ง์ ๋์ง ์๋๋ค. ํด๋์ค์ contructor, ํ๋กํ ํ์ ๋ฉ์๋, ์ ์ ๋ฉ์๋๋ ๋ชจ๋ ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ Enumerable์ ๊ฐ์ด false๋ค. ์ฆ, ์ด๊ฑฐ๋์ง ์๋๋ค. ์ ์ ๋ฉ์๋์ ํ๋กํ ํ์ ๋ฉ์๋์..
-
ํ์ดํ ํจ์๋ ์ผ๋ฐ ํจ์์ ๋ฌด์์ด ๋ค๋ฅธ๊ฐ์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 26. 18:34
TLDR; ํจ์์ ์ธ๋ฌธ๊ณผ ํจ์ํํ์์ ์ฐจ์ด ํจ์ ์ ์ธ๋ฌธ์ ํจ์ ํธ์ด์คํ ์ด ์ผ์ด๋๋ค. ์ฆ, ๋ฐํ์ ์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํจ์ ์ด๋ฆ๊ณผ ๋์ผํ ์ด๋ฆ์ ์๋ณ์๋ฅผ ์๋ฌต์ ์ผ๋ก ์์ฑํ๊ณ ์์ฑ๋ ํจ์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ๋ค. ( ๋ณ์ ํธ์ด์คํ ๊ณผ ๋ค๋ฅด๊ฒ undefined๊ฐ ์๋๋ผ ํจ์ ๊ฐ์ฒด๋ก ์ด๊ธฐํ๋๋ค.) ๋ฐ๋ฉด, ํจ์ํํ์์ ๋ณ์ ํธ์ด์คํ ์ด ๋ฐ์ํ์ฌ ํ ๋น๋ฌธ์ด ์คํ๋๋ ์์ ์ ํ๊ฐ๋์ด ํจ์ ๊ฐ์ฒด๊ฐ ๋๋ค. ํ์ดํ ํจ์์ ์ผ๋ฐ ํจ์์ ์ฐจ์ด ํ์ดํ ํจ์๋ ํจ์ ์์ฒด์ this ๋ฐ์ธ๋ฉ์ ๊ฐ์ง ์์์, ํ์ดํ ๋ด๋ถ ํจ์์์ this๋ฅผ ์ฐธ์กฐํ๋ฉด ์์ ์ค์ฝํ์ this๋ฅผ ๊ทธ๋๋ก ์ฐธ์กฐํ๋ค. ์ด๋ฅผ lexical this๋ผ๊ณ ํ๋ค. ํ์ดํ ํจ์๋ constructor๊ฐ ์๊ธฐ ๋๋ฌธ์, new์ ํจ๊ป ํธ์ถํ ์ ์๋ค. ์ฆ ์์ฑ์ ํจ์๋ก์ ์ฌ์ฉํ ..