๐ฉ๐ป๐ป dev (35) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ํจํค์ง ๋งค๋์ ( ft. ํจํค์ง ๋งค๋์ ์ ๊ณผ๊ฑฐ, ํ ์ค์ ์ ํ, ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋) ๐ค turborepo๋ก ๋ชจ๋ ธ๋ ํฌ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ค๊ณ ์ค์น๋ฅผ ํ๊ธฐ ์ํ ํจํค์ง ๋งค๋์ ๋ค ์ค ์ด๋ค ๊ฑธ ์ฌ์ฉํด์ผ ํ๋? ์ด๋ค์ ์ฐจ์ด์ ์ ํ ๊ธฐ์ค์ ๋ญ๊น?๐ ๋๋ง์นจ ํจํค์ง ๋งค๋์ ์ ๋ํด ํ๋ฒ ์ง๊ณ ๋์ด๊ฐ ๋ณด๋ ค๋ค๊ฐ ํ ์ค์ ํจํค์ง ๋งค๋์ ์ ๊ณผ๊ฑฐ, ํ ์ค์ ์ ํ, ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋๋ ์ข์ ๊ธ์ด ์ฌ๋ผ์์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. ๐ฉ๐ป๐ป ์ดํด๋ณผ ๋ด์ฉ- ํจํค์ง ๋งค๋์ ๊ฐ ๋ฌด์์ธ์ง- ํจํค์ง ๋งค๋์ ๊ฐ ๋์ํ๋ 3๊ฐ์ง ๋จ๊ณ- npm vs pnpm vs Yarn PnP- ํ ์ค์ Pick ๐ฉ๐ป๐ป ํจํค์ง ๋งค๋์ ๋?๋ชจ๋์์คํ (ESM & CJS)์ ๋ํด์ ๋ค๋ค๋ฏ์ด JS/TS์์๋ require ํน์ import๋ก ์ธ๋ถ์ ๋ชจ๋์ ์ฌ์ฉํ ์ ์๋ค.์ฌ๊ธฐ์ ์ธ๋ถ์ ๋ชจ๋์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐธ์กฐํ๋๋ก ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ด ๋ฐ๋ก๋ฐ๋ก ํจํค์ง ๋งค๋์ ๋ค... ํ ์คใ ฃSLASH 23 - ํผ๋ : ์์์ง๋ ํ์ด์ง ํ ๋ฐฉ์ ๊ด๋ฆฌํ๊ธฐ (TOSH | SLASH 23 - Funnel Pattern : Organizing an overflow of pages at once) โ ๏ธ ์ ์๊ถ ๋ณดํธ๋ฅผ ์ํด ์๋ฃ ๋ฐ ์์๊ฐ ๋์ฒด๋์์ต๋๋ค. ์์ ์ฝ๋๋ Reactโ๏ธ๋ก ์์ฑ๋์์ต๋๋ค.๐ซจ ํต์ ์ฌ ๊ฐ์ ์ ํ๊ธฐ ์ํด์ ์๋์ ๊ฐ์ด ๊ธด ํผ๊ณผ ์ฝ์ ์ด ํฌํจ๋ ํ์ด์ง๋ฅผ ๋ง์ฃผ์น๊ฒ ๋ ๋๊ฐ ์๋ค.์ด๋ ๊ฒ ๋ง์ ํ์ด์ง๋ค์ ๋๋๋๋ ํ๋ฆ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด ๋ญ๊น?์ด๋ฒ๊ธ์์๋ ํ ์ค SLASH23์์ ๋ค๋ฃฌ ํผ๋์ ํตํ ๋ถ๊ธฐ์ ์ํ ๊ด๋ฆฌ์ ๋ํด ์ดํด๋ณด์.์๋น์ค๋ฅผ ๊ฐ๋ฐํ ๋ ๋ํ์ ์ธ ํ๋ก ํธ์๋ ํจํด๋ค1. ์์ ๋ชฉ๋ก ํ์ด์ง -> ์์ธ ํ์ด์ง ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๋ธ๋ก๊ทธ๋ ๋ด์ค, To-do ๋ฆฌ์คํธ๋ ์ด ์ ํ์ ํด๋น๋๋ค. 2. ๋จ์ผ ํ์ด์ง ํ์ด์ง ์ด๋ ์์ด ํ ํ๋ฉด ๋ด์์ ์ํธ์์ฉํ ์ ์๊ณ , ์ง๋๋ ๋ฉ์ ์ ์ฑ์ด ์ด ์ ํ์ ํด๋น๋๋ค. 3. ์ค๋ฌธ์กฐ์ฌ ์ฌ๋ฌ ํ์ด์ง๋ค์ ํตํด ์ํ๋ฅผ ์์ง -> ๊ฒฐ๊ณผ ํ์ด์ง๋ก ์ด๋ฃจ.. ๋ชจ๋ ์์คํ ๐ฃ๏ธ import๊ณผ require์ ์ฐจ์ด๋ฅผ ์๊ณ ๊ณ์๋์? ๐ค ๋ ธ๋ ํ๋ก์ ํธ์์๋ require ๋ง์ด ๋ณธ ๊ฑฐ ๊ฐ๊ณ , react์์ import ๋ง์ด ์ผ๋ ๊ฑฐ ๊ฐ์๋ฐ? import๊ณผ require์ ๋ํด ์๊ธฐ ์ํด์๋ ๋ชจ๋ ์์คํ ์ด๋ผ๋ ๊ฒ์ ๋ํด ์์์ผ ํ๋ค.์ค๋์ ๋ชจ๋ ์์คํ ์ด ๋ฌด์์ด๊ณ , ์ด๋ค ๊ฒ๋ค์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ํน์ง๊ณผ ์ฅ๋จ์ ์ ์ดํด๋ณด์.JS ๋ชจ๋ ์์คํ ์ด๋?์์ ์น์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ด๋นํ๊ณ ์ ๊ณตํ ์ ์๋ ๊ธฐ๋ฅ๋ค์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ ์ ๋์๋ค.ํ์ง๋ง ์ ์ฐจ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ญํ ์ด ๊ฑฐ๋ํด์ง๊ณ , ๊ธฐ๋ฅ๋ค์ ๋ง๋ค๋ฉด์ ๋ค์์คํ์ด์ค๋ฉฐ dependency๋ฉฐ ๊ด๋ฆฌํ ๊ฒ๋ ๋น๋ก(์ ๋น๋ก๋ ์๋ ์๋?)ํด์ ๋ฐฉ๋ํด์ก๋ค.๋ชจ๋ ์์คํ ์ ์ด๋ ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ด ์ค์ฝํ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ์์ผ๋ก ๋ฑ์ฅํ๊ฒ ๋์๋ค.J.. โ๏ธ Error boundary ๐ฑ ์ฑ ๊ฐ๋ฐ ๋์ค ์๋ฌ๊ฐ ๋ฐ์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ง ์๋๋ค๋ฉด ๋จธ๋ฆฌ๋ฟ๋ง ์๋๋ผ ์ ์ ์๊ฒ ๋ณด์ฌ์ค ํ๋ฉด๋ ์ํ์๊ฒ ๋ณํ ๊ฑฐ ๊ฐ๋ค.๐ค ๋ฆฌ์กํธ์์๋ ์๋ฌ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ค ์ ์์๊น?๋ฆฌ์กํธ์ Error boundary (legacy)๊ฐ๋ฐ ๋ฌธ์์ ์ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์กํธ๋ ๋ ๋๋ง ๋์ค์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด UI๋ฅผ ํ๋ฉด์์ ์ ๊ฑฐํ๋ค.์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์๋ ํด๋น UI๋ฅผ Error boundary๋ก ๊ฐ์ธ์ค ์ ์๋ค. ์ฆ, Error boundary๋ ์๋ฌ๊ฐ ๋์ ์ ๊ฑฐ๋ UI๋์ ์ ํ๋ฉด์ fallback UI๋ฅผ ๋ณด์ฌ์ฃผ๋ ํน์ํ ์ปดํฌ๋ํธ๋ค. Error boundary๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ static getDerivedStateFromError๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.static getDerivedStateFromError๋ฅผ ์ ๊ณตํด์ผ ์๋ฌ.. โ๏ธ <Suspense> ํ์ฉ ์ด์ ๊ธ: 2024.06.15 - [๐ฉ๐ป๐ป dev] - โ๏ธ ๋? ์์๋ ๋ฆฌ์กํธ ๊ณต์๋ฌธ์์ Suspense props์ ๋ํด ์์๋ดค๋ค. ๋?" data-og-description="๐ฃ๏ธ 'Suspense'๋ฅผ ์จ๋ณด์ ์ ์๋์? ์๋ค๋ฉด ์ธ์ , ์ ์ฐ์๋์? ์์ฐ๋ฉด ์ด๋ค ์ ์ด ๋ถํธํ๋์? ์ฐ๊ธด ์ฐ๋๋ฐ..๋ก๋ฉ ์ค์ ๋์ ๋ณด์ฌ์ค UI๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์ ์๋๊ฐ? ๋ฆฌ์กํธ์ ๊ณต์๋ฌธ์์ ์ํ๋ฉด " data-og-host="pyotato-dev.tistory.com" data-og-source-url="https://pyotato-dev.tistory.com/9" data-og-url="https://pyotato-dev.tistory.com/9" data-og-image="https://scrap.kakao.. โ๏ธ <Suspense>๋? ๐ฃ๏ธ 'Suspense'๋ฅผ ์จ๋ณด์ ์ ์๋์? ์๋ค๋ฉด ์ธ์ , ์ ์ฐ์๋์? ์ ์ฐ๋ฉด ์ด๋ค ์ ์ด ๋ถํธํ๋์? ์ฐ๊ธด ์ฐ๋๋ฐ..๋ก๋ฉ ์ค์ ๋์ ๋ณด์ฌ์ค UI๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด์ ์๋๊ฐ? ๋ฆฌ์กํธ์ ๊ณต์๋ฌธ์์ ์ํ๋ฉด ๋ children์ด ๋ก๋ฉ ์ ๊น์ง ๋ณด์ฌ์ค fallback ์์๋ฅผ ์ ๊ณตํ๋ ์ปดํฌ๋ํธ๋ผ๊ณ ํ๋ค.๋ฆฌ์กํธ์ ์ ๋ํด์ ๋ ์์ธํ ๋ค๋ฃจ๊ธฐ ์ ์,Suspend๋ผ๋ ๋จ์ด์ ๋ป์ ํ๋ฒ ์ดํด๋ณด๊ณ ๊ฐ๋ฉด ๋ฅผ ์ ์ฐ๊ณ , ์ธ์ ์ฐ๋์ง, ๊ทธ๋ฆฌ๊ณ ์ญํ ์ด ๋ฌด์์ธ์ง ์ดํดํ๊ธฐ๊ฐ ์ฝ๋ค. Suspend๋ ์ผ์์ ์ผ๋ก ์ด๋ค ๋์์ด ๋ฐ์ํ๊ฑฐ๋ ์ผ์ด๋๋ ๊ฒ์ ๋ฉ์ถ๋ ๊ฒ (temporarily prevent from continuing or being in force or effect)์ด๋ค. ๊ทธ๋ผ ๋ฆฌ์กํธ์ ๋ ์ด๋ค ๋์์ ์ธ์ ์ ์ ๋ฉ์ถฐ์ฃผ๋ ๊ฑธ.. ์ ์ธ์ ์ธ ์ฝ๋ ์์ฑํ๊ธฐ ๐ฃ๏ธ '์ ์ธ์ ์ธ ์ฝ๋'์ ๋ํด์ ๋ค์ด๋ณด์ จ๋์? ๋ค์ด๋ ๋ดค๋๋ฐ.. ๋ญ์ง? ํ ์ค ํ๋ก ํธ์๋ ์ฑํฐ์์๋ ์ ์ธ์ ์ธ ์ฝ๋ (Declarative Code)๋ฅผ ์ถ์ํ ๋ ๋ฒจ์ด ๋์์ง ์ฝ๋๋ผ๊ณ ์๊ฐํ๋ค๊ณ ํ๋ค. ์ถ์ํ ๋ ๋ฒจ์ด ๋์์ง ์ฝ๋๋? ๋ค์๊ณผ ๊ฐ์ด ๋ฐฐ์ด์ ํฉ์ ๊ตฌํ๋ ํจ์ sum์ ์ดํด๋ณด์. sum([1,2,3]);// sum ํจ์์ ๊ตฌํ function sum(nums: number[]) { let result = 0; for (const num of nums) { result += num; } return result;} sum ํจ์์ ์ด๊ธฐ๊ฐ์ 0์ด๊ณ , for๋ฌธ์ ๋๋ฉด์ ๋ฐฐ์ด์ ๊ฐ ์๋ฅผ ๋ํ๊ณ ,๋ํด์ง ๊ฒฐ๊ด๊ฐ์ ๋ฆฌํดํด์ค๋ค. ์ด ์์ ์ด ์ถ์ํ๋์ด, sum ํจ์๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋์ ๋ด๋ถ์ ๋ณต์กํ ์ .. [spotify-api] VINYLIFY : ์คํฌํฐํ์ด apiํ์ฉํ ๊ฒ์ + ์ฌ์ ํ๋ก์ ํธ(3) ์ค๋น๋ฌผ: authorization์ ๋ด๋นํ ์๋ฒ ์ฝ๋ 2024.06.12 - [๐ฉ๐ป๐ป dev] - [spotify-api] VINYLIFY : ์คํฌํฐํ์ด apiํ์ฉํ ๊ฒ์ + ์ฌ์ ํ๋ก์ ํธ(2) ์ค๋น๋ฌผ: authorization์ ๋ด๋นํ ์๋ฒ์ ์ด์ด์ [spotify-api] VINYLIFY : ์คํฌํฐํ์ด apiํ์ฉํ ๊ฒ์ + ์ฌ์ ํ๋ก์ ํธ(2) ์ค๋น๋ฌผ: authorization์ ๋ด๋นํ ์2024.06.12 - [๐ฉ๐ป๐ป dev] - [spotify-api] VINYLIFY : ์คํฌํฐํ์ด apiํ์ฉํ ๊ฒ์ + ์ฌ์ ํ๋ก์ ํธ(1) ์ค๋น๋ฌผ:spotify dev ๊ณ์ , application ์ ์ด์ด์.. [spotify-api] VINYLIFY : ์คํฌํฐํ์ด apiํ์ฉํ ๊ฒ์ + ์ฌ์ ํpyotato-dev.tistory.com ์ด์ ๋ฐฐํฌํ ์ค๋น๋ฅผ.. ์ด์ 1 2 3 4 5 ๋ค์