๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€101

๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ๋ณต๋ถ™์€ ์ด์ œ ๊ทธ๋งŒ! Turborepo๋กœ ํ”„๋ก ํŠธ์—”๋“œ ๋ชจ๋…ธ๋ ˆํฌ ๋„์ž…ํ•˜๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ค๋Š˜์€ ํ”„๋ก ํŠธ์—”๋“œ ์‹ค๋ฌด์—์„œ ๊ทœ๋ชจ๊ฐ€ ์ข€ ์ปค์ง€๋‹ค ๋ณด๋ฉด ๋ฌด์กฐ๊ฑด ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” '์ปดํฌ๋„ŒํŠธ ๋ณต๋ถ™ ์ง€์˜ฅ'์—์„œ ํƒˆ์ถœํ•˜๋Š” ๋ฒ•์„ ์ด์•ผ๊ธฐํ•ด๋ณผ๊นŒ ํ•ด์š”.๋ณดํ†ต ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด ์œ ์ €๊ฐ€ ์“ฐ๋Š” B2C ์•ฑ(์›น) ํ•˜๋‚˜, ๊ทธ๋ฆฌ๊ณ  ์‚ฌ๋‚ด์—์„œ ๊ด€๋ฆฌ์ž๋“ค์ด ์“ฐ๋Š” ์–ด๋“œ๋ฏผ(Admin) ํŽ˜์ด์ง€ ํ•˜๋‚˜, ์ด๋ ‡๊ฒŒ ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตด๋ฆฌ๊ฒŒ ๋˜์ฃ ? ์ฒ˜์Œ์—” ํ”„๋กœ์ ํŠธ ๋‘ ๊ฐœ ๋„์›Œ๋†“๊ณ  "์–ด? ์ด ๋ฒ„ํŠผ ์–ด๋“œ๋ฏผ์—๋„ ๋˜‘๊ฐ™์ด ๋“ค์–ด๊ฐ€๋„ค?" ํ•˜๋ฉด์„œ ์œ ์ € ์•ฑ์— ์žˆ๋˜ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด์„œ ์–ด๋“œ๋ฏผ์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜๊ณค ํ•˜์ฃ . ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜๋‚˜ ์ปค์Šคํ…€ ํ›…(Hook)๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๊ณ ์š”.๊ทผ๋ฐ ์ด๊ฒŒ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง€๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๐Ÿšจ ๋ฒ„ํŠผ ๋””์ž์ธ์ด ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์œ ํ‹ธ ํ•จ์ˆ˜์— ์น˜๋ช…์ ์ธ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ฒจ์„œ ๊ณ ์ณค๋Š”๋ฐ, ์–ด๋“œ๋ฏผ ์ชฝ์—๋Š” ์ ์šฉํ•˜๋Š” ๊ฑธ ๊นœ๋นกํ•ด์„œ ์—๋Ÿฌ๊ฐ€ ํ„ฐ์ง€๋Š” ๋Œ€์ฐธ์‚ฌ๊ฐ€.. 2026. 9. 21.
ESLint, Prettier ์„ธํŒ…ํ•˜๋А๋ผ ์‚ฝ์งˆํ•˜์‹œ๋‚˜์š”? ์ดˆ๊ณ ์† ๋ฆฐํ„ฐ Biome์œผ๋กœ ๊ฐˆ์•„ํƒ€๊ธฐ ๐Ÿšจ ์ƒˆ๋กœ์šด ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ํ•˜๋Š” ์ผ์ด ๋ญ˜๊นŒ์š”? ์•„๋งˆ ๋Œ€๋ถ€๋ถ„ npm init์„ ์น˜๊ณ  ๋‚˜์„œ eslint, prettier๋ฅผ ์„ค์น˜ํ•˜๊ณ , ์˜จ๊ฐ– ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์„ค์ • ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ๋„ฃ๋Š” ์ผ์ผ ๊ฑฐ์˜ˆ์š”. "ํฌ๋งคํŒ…์€ Prettier๊ฐ€ ํ•˜๊ณ , ๋ฆฐํŒ…์€ ESLint๊ฐ€ ํ•˜๋˜, ๋‘˜์ด ์ถฉ๋Œ๋‚˜๋ฉด ์•ˆ ๋˜๋‹ˆ๊นŒ eslint-config-prettier๋ฅผ ๊น”๊ณ ..." ์ด๋ ‡๊ฒŒ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์น˜๋‹ค ์ง€์น˜๋Š” ๊ฒฝํ—˜, ๋‹ค๋“ค ํ•œ ๋ฒˆ์ฏค ํ•ด๋ณด์…จ์ฃ ? ๊ฒŒ๋‹ค๊ฐ€ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์กฐ๊ธˆ๋งŒ ์ปค์ ธ๋„ ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ๋ฆฐํ„ฐ๊ฐ€ ๊ตผ๋ฒต์ด์ฒ˜๋Ÿผ ๋Œ์•„๊ฐ€๋Š” ๊ฑธ ๋ณด๋ฉด์„œ ํ•œ์ˆจ์„ ์‰ฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์š”์ฆ˜ ์ด ๋”์ฐํ•œ ์‚ฝ์งˆ์„ ๋‹จ ํ•œ ๋ฐฉ์—, ๊ทธ๊ฒƒ๋„ ๋ฏธ์นœ ์†๋„๋กœ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ์ƒˆ๋กœ์šด ํˆด์ด ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ๊ณ„์˜ '๊ตญ๋ฃฐ'๋กœ ๋– ์˜ค๋ฅด๊ณ  ์žˆ์–ด์š”. ๋ฐ”๋กœ Biome(๋ฐ”์ด์˜ด) ์ž…๋‹ˆ๋‹ค! ๐Ÿ’ก.. 2026. 9. 18.
React 19 Compiler ๋„์ž…: ์ด์ œ useMemo, useCallback ์“ฐ๋А๋ผ ์‚ฝ์งˆํ•  ํ•„์š” ์—†๋‹ค๊ณ ์š”? ๐Ÿšจ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ํ•œ ๋ฒˆ์ฏค ๊ฒช์–ด๋ณธ ์•…๋ชฝ์ด ์žˆ์ฃ . ๋ฐ”๋กœ '๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง(Re-rendering)'์„ ๋ง‰๊ธฐ ์œ„ํ•œ ๋์—†๋Š” ์‚ฌํˆฌ์ž…๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์ข€ ์ตœ์ ํ™”ํ•ด๋ณด๊ฒ ๋‹ค๊ณ  ์ฝ”๋“œ๋งˆ๋‹ค useMemo, useCallback, React.memo๋ฅผ ๋•์ง€๋•์ง€ ๋•Œ๋ ค ๋„ฃ๋‹ค ๋ณด๋ฉด, ๋‚ด๊ฐ€ ์ง€๊ธˆ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์งœ๋Š” ๊ฑด์ง€ ๋ฆฌ์•กํŠธ ๋น„์œ„๋ฅผ ๋งž์ถ”๊ณ  ์žˆ๋Š” ๊ฑด์ง€ ํ˜„ํƒ€๊ฐ€ ์˜ฌ ๋•Œ๊ฐ€ ํ•œ๋‘ ๋ฒˆ์ด ์•„๋‹ˆ์—์š”.ํŠนํžˆ ํ›…(Hook)์˜ ์˜์กด์„ฑ ๋ฐฐ์—ด(Dependency Array)์— ๊ฐ’ ํ•˜๋‚˜ ๋นผ๋จน์–ด์„œ ์ƒ๊ธฐ๋Š” ๋ฒ„๊ทธ ์žก๋А๋ผ ๋ฐค์ƒˆ๋ฉฐ ์‚ฝ์งˆํ•ด ๋ณธ ๊ฒฝํ—˜, ๋‹ค๋“ค ์žˆ์œผ์‹œ์ฃ ? ๊ทธ๋Ÿฐ๋ฐ ๋“œ๋””์–ด, ์šฐ๋ฆฌ๋ฅผ ์ด ๊ณ ํ†ต์—์„œ ํ•ด๋ฐฉ์‹œ์ผœ์ค„ ๊ตฌ์› ํˆฌ์ˆ˜๊ฐ€ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ React 19์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ 'React Compiler' ์˜ˆ์š”.์˜ค๋Š˜ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ทธ๋™์•ˆ ์šฐ๋ฆฌ๋ฅผ ๊ดด๋กญํ˜”๋˜ ๋ฉ”๋ชจ์ด์ œ์ด์…˜(.. 2026. 9. 18.
"์•„์ง๋„ ์ปดํฌ๋„ŒํŠธ ์ฒ˜์Œ๋ถ€ํ„ฐ ์งœ์„ธ์š”?" Shadcn UI๋กœ ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ์‹œ๊ฐ„ 1/10๋กœ ์ค„์ด๊ธฐ ์ƒˆ๋กœ์šด ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋งž๋‹ฅ๋œจ๋ฆฌ๋Š” ๊ณ ๋ฏผ, ๋ฐ”๋กœ "UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•  ๊ฒƒ์ธ๊ฐ€?"์ฃ . ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๋‹ค ์งœ์ž๋‹ˆ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์น˜๋‹ค ์ง€์น˜๊ณ  ์ ‘๊ทผ์„ฑ(a11y) ์ฑ™๊ธฐ๋А๋ผ ๋์—†๋Š” ์‚ฝ์งˆ์ด ์‹œ์ž‘๋ผ์š”. ๊ทธ๋ ‡๋‹ค๊ณ  MUI๋‚˜ Ant Design ๊ฐ™์€ ๋ฌด๊ฑฐ์šด UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ฐ์ž๋‹ˆ, ๋””์ž์ธ ์ปค์Šคํ…€์ด ๋„ˆ๋ฌด ๋นก์„ธ๊ณ  ์•ฑ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ๋งŒ ๋ฌด์‹ํ•˜๊ฒŒ ์ปค์ง€๋Š” ๊ฒฝํ—˜, ๋‹ค๋“ค ํ•œ ๋ฒˆ์ฏค ํ•ด๋ณด์…จ์„ ๊ฑฐ์˜ˆ์š”.๊ทธ๋Ÿฐ๋ฐ ์ตœ๊ทผ 1~2๋…„ ์‚ฌ์ด, React์™€ Next.js ์ƒํƒœ๊ณ„์—์„œ ์™„์ „ํžˆ '๊ตญ๋ฃฐ'๋กœ ์ž๋ฆฌ ์žก์€ UI ์†”๋ฃจ์…˜์ด ๋“ฑ์žฅํ–ˆ์–ด์š”. ๋ฐ”๋กœ ์˜ค๋Š˜ ์†Œ๊ฐœํ•  Shadcn UI์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ npm ํŒจํ‚ค์ง€์™€๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฐ€์ง„ ์ด ๋…€์„์ด ์™œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์„ ์—ด๊ด‘ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”์ง€, ์‹ค๋ฌด์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ™œ์šฉ.. 2026. 9. 18.
Redux๋Š” ๋ฌด๊ฒ๊ณ  Context API๋Š” ๋ Œ๋”๋ง ์ง€์˜ฅ? Zustand๋กœ 1๋ถ„ ๋งŒ์— ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋๋‚ด๊ธฐ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ๊ฐ€์žฅ ๋งŽ์ด ํ•˜๋Š” ๊ณ ๋ฏผ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ '์ƒํƒœ ๊ด€๋ฆฌ'์ฃ ? ํŠนํžˆ React ์ƒํƒœ๊ณ„์—์„œ๋Š” ์ด ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ•˜๋Š˜๊ณผ ๋•… ์ฐจ์ด๋กœ ๊ฐˆ๋ฆฌ๊ฒŒ ๋ผ์š”. ๊ณผ๊ฑฐ์—๋Š” Redux๊ฐ€ ๊ฑฐ์˜ ์œ ์ผํ•œ ํ•ด๋‹ต์ด์—ˆ์ง€๋งŒ, ์š”์ฆ˜ ํ”„๋ก ํŠธ์—”๋“œ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ๋Š” Zustand๊ฐ€ ๊ฑฐ์˜ '๊ตญ๋ฃฐ'๋กœ ์ž๋ฆฌ ์žก์•„๊ฐ€๊ณ  ์žˆ์–ด์š”.์™œ ๋‹ค๋“ค ๋ฌด๊ฑฐ์šด Redux๋‚˜ ๊ธฐ๋ณธ ๋‚ด์žฅ๋œ Context API ๋Œ€์‹  Zustand์— ์—ด๊ด‘ํ•˜๋Š” ๊ฑธ๊นŒ์š”? ์˜ค๋Š˜์€ ํ”„๋ก ํŠธ์—”๋“œ ์‹ค๋ฌด์—์„œ ์‚ฝ์งˆ์„ ์ค„์—ฌ์ฃผ๊ณ , ๋นก์„ธ๊ฒŒ ์ž‘์„ฑํ•˜๋˜ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ๋ฅผ ํ™• ์ค„์—ฌ์ฃผ๋Š” Zustand์˜ ๋งค๋ ฅ๊ณผ ์‹ค์ „ ์ ์šฉ๋ฒ•์„ ๋‚ฑ๋‚ฑ์ด ํŒŒํ—ค์ณ ๋ณผ๊ฒŒ์š”! ๐Ÿ’ก๐Ÿšจ ๊ธฐ์กด ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ๋“ค์˜ ์น˜๋ช…์ ์ธ ๋‹จ์ Zustand๊ฐ€ ์™œ ์ข‹์€์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ๊ธฐ์กด ๋„๊ตฌ๋“ค์ด ์šฐ๋ฆฌ๋ฅผ ์–ผ.. 2026. 9. 18.
ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™” 1์ˆœ์œ„: Core Web Vitals (LCP, CLS) ์‹ค์ „ ๊ฐœ์„  ๊ฐ€์ด๋“œ ์•ˆ๋…•ํ•˜์„ธ์š”! ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•˜๋‹ค ๋ณด๋ฉด ๊ธฐํš์ž๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ "์šฐ๋ฆฌ ์‚ฌ์ดํŠธ ์™ค์ผ€ ๋А๋ ค์š”?"๋ผ๋Š” ๊ฐ€์Šด ์ฒ ๋ ํ•œ ์งˆ๋ฌธ์„ ๋“ค์„ ๋•Œ๊ฐ€ ์žˆ์ฃ . ์„œ๋ฒ„ ์‘๋‹ต์ด ๋А๋ฆฐ ๊ฑธ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์€ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์ตœ์ ํ™”๊ฐ€ ๋œ ๋˜์–ด ์žˆ์–ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.์˜ˆ์ „์—๋Š” ๋‹จ์ˆœํžˆ 'ํŽ˜์ด์ง€ ์ „์ฒด๊ฐ€ ๋กœ๋”ฉ๋˜๋Š” ์‹œ๊ฐ„(Load)'๋งŒ ๋ดค๋‹ค๋ฉด, ์š”์ฆ˜ ๊ตฌ๊ธ€ SEO์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์˜ ํ•ต์‹ฌ ํŠธ๋ Œ๋“œ๋Š” ๋‹จ์—ฐ Core Web Vitals(์›น ํ•ต์‹ฌ ์„ฑ๋Šฅ ์ง€ํ‘œ)์ž…๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ์ฑ„์šฉ ๊ณต๊ณ  ์šฐ๋Œ€์‚ฌํ•ญ์— ๊ตญ๋ฃฐ์ฒ˜๋Ÿผ ๊ผญ ์ ํ˜€ ์žˆ๋Š” ๊ทธ ๋‹จ์–ด ๋งž์•„์š”.๊ตฌ๊ธ€์—์„œ ๋ฐœํ‘œํ•œ 3๊ฐ€์ง€ ํ•ต์‹ฌ ์ง€ํ‘œ ์ค‘์—์„œ๋„ ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋งˆ์ฃผ์น˜๊ณ , ๊ฐœ์„ ํ–ˆ์„ ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ํ™• ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ๋Š” LCP(์ตœ๋Œ€ ์ฝ˜ํ…์ธ  ํ’€ ํŽ˜์ธํŠธ)์™€ CLS(๋ˆ„์  ๋ ˆ์ด์•„์›ƒ ์ด๋™) ํ˜„์ƒ์„ ์–ด๋–ป๊ฒŒ ๋นก์„ธ๊ฒŒ ์ตœ์ ํ™”ํ•˜๋Š”์ง€ .. 2026. 9. 17.
728x90
๋ฐ˜์‘ํ˜•
LIST