# [[Folder Structure Best Practices|Folder Structure Best Practices]] ## ๐Ÿ“Œ Brief Summary React ๋“ฑ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ, ํ™•์žฅ์„ฑ, ๊ทธ๋ฆฌ๊ณ  ํ˜‘์—… ํšจ์œจ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค [1]. ํ˜„๋Œ€์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ณผ๊ฑฐ์˜ ํŒŒ์ผ ์œ ํ˜• ๊ธฐ๋ฐ˜(์œ ํ˜•๋ณ„ ๋ถ„๋ฅ˜) ๊ตฌ์กฐ์—์„œ ๋ฒ—์–ด๋‚˜, ๊ธฐ๋Šฅ(Feature)์ด๋‚˜ ๋„๋ฉ”์ธ ์ค‘์‹ฌ์œผ๋กœ ๊ด€๋ จ๋œ ๋กœ์ง์„ ๋ฌถ๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋˜๋Š” ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์ด ๋ชจ๋ฒ” ์‚ฌ๋ก€๋กœ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [2, 3]. ์ด๋ฅผ ํ†ตํ•ด UI, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ์ƒํƒœ ๊ด€๋ฆฌ ๋“ฑ์˜ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4]. ## ๐Ÿ“– Core ์†Œ์Šค Content * **๊ตฌ์กฐ์˜ ์ง„ํ™”์™€ ํ•œ๊ณ„:** * ์ดˆ๊ธฐ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋Š” ์ฃผ๋กœ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ `components` ํด๋”์—, ๋ชจ๋“  ํ›…์„ `hooks` ํด๋”์— ๋„ฃ๋Š” ํ”Œ๋žซ(Flat) ๊ตฌ์กฐ๋‚˜ ํŒŒ์ผ ์œ ํ˜• ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค [5, 6]. * ํ•˜์ง€๋งŒ ์•ฑ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด ๋‹จ์ผ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํด๋”๋ฅผ ๋„˜๋‚˜๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ, ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ณ  ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›Œ์ง€๋ฉฐ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ๋ณต์žกํ•ด์ง€๋Š” ํ•œ๊ณ„๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [3, 6, 7]. * **๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜(Feature-based) ๋ฐ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌ์กฐ:** * 2025๋…„ ๊ธฐ์ค€ ๊ฐ€์žฅ ๊ถŒ์žฅ๋˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์€ ํŒŒ์ผ ์œ ํ˜•์ด ์•„๋‹Œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์ด๋‚˜ ๋ชจ๋“ˆ์„ ์ค‘์‹ฌ์œผ๋กœ ํด๋”๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [2, 8, 9]. * ๊ฐ ๊ธฐ๋Šฅ(Feature)์€ ์บก์Аํ™”๋˜์–ด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ทœ๋ชจ ํ™•์žฅ ์‹œ ๊ธฐ์กด ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋งค๋„๋Ÿฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 10]. * **๊ถŒ์žฅ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์„ฑ (src/ ํ•˜์œ„):** * `assets/`: ์ด๋ฏธ์ง€, ํฐํŠธ ๋“ฑ ์ •์  ๋ฏธ๋””์–ด ๋ฆฌ์†Œ์Šค ๋ณด๊ด€ [11, 12]. * `components/`: ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์—์„œ ๊ณตํ†ต์œผ๋กœ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๋„๋ฉ”์ธ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” UI ์š”์†Œ (์˜ˆ: ๋ฒ„ํŠผ, ๋ชจ๋‹ฌ, ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ๋“ฑ) [2, 12, 13]. * `features/` (๋˜๋Š” `modules/`): ์ธ์ฆ(Auth), ๋Œ€์‹œ๋ณด๋“œ(Dashboard) ๋“ฑ ๋„๋ฉ”์ธ๋ณ„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง. ์ด ํด๋” ๋‚ด๋ถ€์—๋Š” ํ•ด๋‹น ๊ธฐ๋Šฅ์—๋งŒ ์“ฐ์ด๋Š” ์ปดํฌ๋„ŒํŠธ, ํ›…, API ๋“ฑ์„ ์บก์Аํ™”ํ•˜์—ฌ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค [2, 9, 13]. * `hooks/`: ํผ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ํŽ˜์นญ ๋“ฑ ์•ฑ ์ „๋ฐ˜์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค์Šคํ…€ ํ›… [9, 14]. * `pages/` (๋˜๋Š” `routes/`): ๋ผ์šฐํŒ…์— ๋งคํ•‘๋˜๋Š” ํŽ˜์ด์ง€ ๋ ˆ๋ฒจ ์ปดํฌ๋„ŒํŠธ [15, 16]. * `services/`: ์„œ๋“œํŒŒํ‹ฐ ์„œ๋น„์Šค ์—ฐ๋™์ด๋‚˜ API ์š”์ฒญ ๋“ฑ ์™ธ๋ถ€ ํ†ต์‹  ๋กœ์ง [16, 17]. * `store/` (๋˜๋Š” `context/`): Redux, Zustand, Context API๋ฅผ ํ™œ์šฉํ•˜๋Š” ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง [14-16]. * `utils/`: ๋‚ ์งœ ํฌ๋งทํŒ…, ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜ [17, 18]. * `styles/`: ๊ธ€๋กœ๋ฒŒ CSS, ํ…Œ๋งˆ(Theme) ๋“ฑ ์ „์—ญ ์Šคํƒ€์ผ๋ง ํŒŒ์ผ [18, 19]. * `types/`: TypeScript ์‚ฌ์šฉ ์‹œ ์ „์—ญ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํƒ€์ž… ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ๋ณด๊ด€ [18]. * `config/`: ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ ์„ค์ •(API ๊ธฐ๋ณธ URL ๋“ฑ) ๊ด€๋ฆฌ [18, 20]. * **Feature-Sliced Design (FSD):** * ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ํด๋” ๊ตฌ์กฐ๋ณด๋‹ค ๋” ์—„๊ฒฉํ•˜๊ฒŒ ์˜์กด์„ฑ์˜ ๋ฐฉํ–ฅ์„ ํ†ต์ œํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค [21]. * `shared` -> `entities` -> `features` -> `widgets` -> `pages` -> `app` ์ด๋ผ๋Š” ๊ณ ์ •๋œ ๋‹ค์ธต ๊ณ„์ธต(Layer)์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค [22, 23]. * ์ƒ์œ„ ๊ณ„์ธต์€ ํ•˜์œ„ ๊ณ„์ธต์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ(Import), ํ•˜์œ„ ๊ณ„์ธต์€ ์ƒ์œ„ ๊ณ„์ธต์„ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋Š” ๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ ๊ทœ์น™์„ ํ†ตํ•ด ์ˆœํ™˜ ์˜์กด์„ฑ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค [22, 24]. * **Next.js ํ™˜๊ฒฝ์—์„œ์˜ ๋ผ์šฐํŠธ ๊ทธ๋ฃน (Route Groups):** * Next.js ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ ํด๋”๋ช… `(folderName)` ๋ฐฉ์‹์„ ํ†ตํ•ด, ์‹ค์ œ URL ๊ฒฝ๋กœ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๊ด€๋ จ ๊ธฐ๋Šฅ์ด๋‚˜ ๋…ผ๋ฆฌ์— ๋”ฐ๋ผ ๋ผ์šฐํŠธ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [25-27]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts - [[Feature-Sliced Design|Feature-Sliced Design]] - ์—ฐ๊ฒฐ ์ด์œ : ๋Œ€๊ทœ๋ชจ React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํด๋” ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์ „๋ฌธ์ ์ธ ํ”„๋ก ํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ๋ฒ•๋ก ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [21]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ํด๋” ๊ฐ„์˜ ๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ ๊ทœ์น™๊ณผ ๊ฐ ํด๋”(Layer, Slice, Segment)๊ฐ€ ๋‹ด๋‹นํ•ด์•ผ ํ•˜๋Š” ์—ญํ• ์˜ ์—„๊ฒฉํ•œ ๋ถ„๋ฆฌ ๋ฐฉ์‹ [22, 28]. - [[_แ„‚แ…ฌแ„‹แ…ช แ„‘แ…กแ†ฏแ„ƒแ…กแ„…แ…ตแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต_ - แ„€แ…ชแ†ซแ„‰แ…ตแ†ทแ„‰แ…กแ„‹แ…ด แ„‡แ…ฎแ†ซแ„…แ…ต (Separation of Concerns)|Separation of Concerns]] (๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ) - ์—ฐ๊ฒฐ ์ด์œ : ํด๋” ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๊ทผ๋ณธ์ ์ธ ๋ชฉ์ ์ด UI ๋ Œ๋”๋ง, ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ, ๋ฐ์ดํ„ฐ ํ†ต์‹ (API) ๋“ฑ์˜ ์ฑ…์ž„์„ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [4, 29]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: `services/`, `store/`, `components/` ๋“ฑ์˜ ํด๋”๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)์„ ํ”„๋ก ํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜ ์ „๋ฐ˜์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• [4, 30]. - [[Naming Conventions|Naming Conventions]] (๋ช…๋ช… ๊ทœ์น™) - ์—ฐ๊ฒฐ ์ด์œ : ์ผ๊ด€๋œ ํด๋” ๋ฐ ํŒŒ์ผ ๋ช…๋ช… ๊ทœ์น™(์˜ˆ: ํด๋”๋ช…์€ kebab-case, ์ปดํฌ๋„ŒํŠธ๋Š” PascalCase)์€ ํด๋” ๊ตฌ์กฐ ๋‚ด์—์„œ ํŒŒ์ผ์„ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ฐพ๊ณ  ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ•ต์‹ฌ ๊ทœ์น™์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [31-33]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์™€ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๋นŒ๋“œ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ํŒ€ ๋‚ด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ• [34, 35]. ### Deeper Research Questions - ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜(Feature-based) ํด๋” ๊ตฌ์กฐ์—์„œ ๊ฐ ๊ธฐ๋Šฅ์ด ์ƒํ˜ธ์ž‘์šฉํ•ด์•ผ ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ต์ฐจ ๊ด€์‹ฌ์‚ฌ(Cross-cutting concerns)๋‚˜ ๊ณต์œ  ์˜์กด์„ฑ์„ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - ๋ ˆ๊ฑฐ์‹œ ํŒŒ์ผ ์œ ํ˜• ๊ธฐ๋ฐ˜(File-type based) React ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ํ˜น์€ Feature-Sliced Design์œผ๋กœ ์ ์ง„์ ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋‹จ๊ณ„๋Š” ๋ฌด์—‡์ธ๊ฐ€? - Feature-Sliced Design์˜ ๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ ์›์น™์„ ESLint์™€ ๊ฐ™์€ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋กœ ์ž๋™ ๊ฐ•์ œํ™”(Governance)ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? - ํด๋” ๊ตฌ์กฐ๋ฅผ ๋ชจ๋“ˆํ™”ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํŒŒ์ผ ์ค‘์ฒฉ ๋ฌธ์ œ์™€ ์ด๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ์ ์ ˆํ•œ ์ธ๋ฑ์Šค(Barrel) ํŒŒ์ผ ์‚ฌ์šฉ ์ „๋žต์˜ ์žฅ๋‹จ์ ์€ ๋ฌด์—‡์ธ๊ฐ€? - ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Context API, Zustand, Redux ๋“ฑ)์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๊ถŒ์žฅ๋˜๋Š” `store/` ํด๋” ๋‚ด๋ถ€์˜ ๊ตฌ์กฐ๋Š” ์–ด๋–ป๊ฒŒ ๋‹ฌ๋ผ์ ธ์•ผ ํ•˜๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** React ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ๋ชจ๋“  ์š”์†Œ๋ฅผ `components/` ํด๋”์— ๋„ฃ์ง€ ์•Š๊ณ  ํŠน์ • ๋„๋ฉ”์ธ(์˜ˆ: ์ธ์ฆ)์—๋งŒ ์“ฐ์ด๋Š” ์š”์†Œ๋Š” `features/auth/components/`๋กœ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์บก์Аํ™”๋ฅผ ์‹ค์ฒœํ•ฉ๋‹ˆ๋‹ค. - **System Design:** ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ… ๋‹จ๊ณ„์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์„ ๋ถ„์„ํ•˜์—ฌ ์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ์ „์—ญ(`shared/` ๋˜๋Š” `components/`)์— ์†ํ•˜๊ณ  ์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ๋กœ์ปฌ(`features/`)์— ์†ํ• ์ง€ ๊ธฐ์ค€์„ ๋งˆ๋ จํ•ฉ๋‹ˆ๋‹ค. - **Operation / Maintenance:** ๊ธฐ๋Šฅ์— ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ํด๋”(`features/feature-name/`)๋งŒ ํ™•์ธํ•˜๋ฉด UI, ์ƒํƒœ, API ์š”์ฒญ ๋กœ์ง์ด ๋ชจ์—ฌ ์žˆ์–ด ๋””๋ฒ„๊น… ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. - **Learning Path:** ์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํ•œ ํ”Œ๋žซ ๊ตฌ์กฐ๋กœ React๋ฅผ ํ•™์Šตํ•œ ํ›„, ์ปดํฌ๋„ŒํŠธ๊ฐ€ 30๊ฐœ ์ด์ƒ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š” ์‹œ์ ์— ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ํด๋” ๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ•˜์—ฌ ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์—ญ๋Ÿ‰์„ ๊ธฐ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - **My Project Relevance:** ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ด๊ฑฐ๋‚˜ ๋ฆฌํŒฉํ† ๋งํ•ด์•ผ ํ•  React ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ, ๊ฑฐ๋Œ€ํ•ด์ง„ `components/` ํด๋”๋ฅผ ๋„๋ฉ”์ธ ๋‹จ์œ„์˜ `features/` ํด๋”๋กœ ๋‚˜๋ˆ„๊ณ  ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ๋กœ์ง๋“ค์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐ ์ง์ ‘์ ์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ### Adjacent Topics - [[แ„‰แ…กแ†ผแ„แ…ข แ„€แ…ชแ†ซแ„…แ…ต(State Management)|State Management]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ „์—ญ ์ƒํƒœ(Global State)์™€ ๋กœ์ปฌ ์ƒํƒœ(Local State)๋ฅผ ์–ด๋””์— ๋ณด๊ด€ํ•ด์•ผ ํ•˜๋Š”์ง€, Zustand์™€ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ `store/` ํด๋”์˜ ๊ตฌ์กฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜๋Š”์ง€ ํ™•์žฅํ•˜์—ฌ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - [[Code Splitting|Code Splitting]] (์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…) - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ผ์šฐํŠธ ํ˜น์€ ํด๋”(Feature) ๋‹จ์œ„๋กœ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…๊ณผ ์ง€์—ฐ ๋กœ๋”ฉ(Lazy Loading)์„ ์ ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ์ „๋žต๊ณผ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. --- *Last updated: 2026-04-30*