# [[Next.js App Router ν”„λ‘œμ νŠΈ]] ## πŸ“Œ Brief Summary Next.js App Router ν”„λ‘œμ νŠΈλŠ” React Server Components(RSC)λ₯Ό 기반으둜 λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— 기쑴의 λŸ°νƒ€μž„ CSS-in-JS(예: styled-components, Emotion) λΌμ΄λΈŒλŸ¬λ¦¬μ™€λŠ” ν˜Έν™˜λ˜μ§€ μ•Šμ•„ μŠ€νƒ€μΌλ§ μ•„ν‚€ν…μ²˜μ˜ λ³€ν™”κ°€ ν•„μˆ˜μ μž…λ‹ˆλ‹€ [1, 2]. μ‹€λ¬΄μ—μ„œ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 ν™•λ³΄ν•˜κΈ° μœ„ν•΄ μŠ€νƒ€μΌλ§μ€ **Tailwind CSS**, **CSS Modules** λ˜λŠ” λΉŒλ“œ νƒ€μž„ 기반의 **vanilla-extract**λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€ [2, 3]. λ”λΆˆμ–΄ λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ ν™•μž₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” `app/` 디렉토리에 λͺ¨λ“  μ½”λ“œλ₯Ό λ„£λŠ” λŒ€μ‹ , λΌμš°νŒ…κ³Ό λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λΆ„λ¦¬ν•˜λŠ” **κΈ°λŠ₯ 주도(Feature-Driven)** ν˜•νƒœμ˜ λͺ¨λ“ˆλŸ¬ 폴더 ꡬ쑰λ₯Ό 채택해야 ν•©λ‹ˆλ‹€ [4, 5]. ## πŸ“– Core Content * **μŠ€νƒ€μΌλ§ μ „λž΅ 및 CSS μ•„ν‚€ν…μ²˜** * Next.js App RouterλŠ” μ„œλ²„μ—μ„œ HTML을 μŠ€νŠΈλ¦¬λ°ν•˜λŠ” **React Server Components(RSC)**λ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ, React context에 μ˜μ‘΄ν•˜λŠ” λŸ°νƒ€μž„ CSS-in-JSλŠ” κΈ°λŠ₯ν•  수 μ—†μœΌλ©° App Routerλ₯Ό μ‚¬μš©ν•˜λŠ” μƒˆ ν”„λ‘œμ νŠΈμ—λŠ” ꢌμž₯λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ [1, 2, 6]. * λ”°λΌμ„œ λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œκ°€ μ—†λŠ” **Tailwind CSS**λ‚˜ 둜컬 μŠ€μ½”ν”„λ₯Ό 보μž₯ν•˜λŠ” **CSS Modules**, ν˜Ήμ€ νƒ€μž… μ•ˆμ •μ„±μ„ μ§€λ‹ˆλ©΄μ„œλ„ λŸ°νƒ€μž„ μ˜€λ²„ν—€λ“œκ°€ 0인 **vanilla-extract**λ₯Ό μ„ νƒν•˜λŠ” 것이 ν˜„μž¬ ꢌμž₯λ˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€ [2, 3]. * νŽ˜μ΄μ§€ λΌμš°ν„°(Pages Router)μ—μ„œ μž‘λ™ν•˜λ˜ κΈ°μ‘΄ styled-components ν”„λ‘œμ νŠΈλ₯Ό App Router둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ ν•  λ•ŒλŠ” 이와 같은 μƒˆλ‘œμš΄ CSS μ ‘κ·Ό λ°©μ‹μœΌλ‘œμ˜ μ „ν™˜ κ³„νšμ΄ ν•„μš”ν•©λ‹ˆλ‹€ [3]. * **μœ μ§€λ³΄μˆ˜ κ°€λŠ₯ν•œ 폴더 ꡬ쑰 (Feature-Driven Architecture)** * App Router μ‚¬μš© μ‹œ ν”νžˆ ν•˜λŠ” κ°€μž₯ 큰 μ‹€μˆ˜λŠ” μ»΄ν¬λ„ŒνŠΈ, ν›…, λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ `app/` 디렉토리에 λΌμš°νŠΈμ™€ ν•¨κ»˜ μ „λΆ€ λͺ°μ•„λ„£λŠ” κ²ƒμž…λ‹ˆλ‹€ [4]. ν”„λ‘œμ νŠΈκ°€ 컀지면 μ΄λŠ” 관리 λΆˆκ°€λŠ₯ν•œ μƒνƒœκ°€ λ©λ‹ˆλ‹€ [4]. * `app/` 폴더 λ‚΄μ˜ 파일(예: `page.tsx`, `layout.tsx`)은 μ˜€λ‘œμ§€ λΌμš°νŒ… 및 λ ˆμ΄μ•„μ›ƒ μ²˜λ¦¬λ§Œμ„ μœ„ν•΄ μ΅œλŒ€ν•œ κ°€λ³κ²Œ μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€ [5, 7]. * μ‹€μ œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ `src/features/` 내에 λ„λ©”μΈμ΄λ‚˜ κΈ°λŠ₯ λ‹¨μœ„(예: `market-data`, `user-profile`)둜 λ¬Άμ–΄ 뢄리해야 ν•©λ‹ˆλ‹€ [4, 5, 7, 8]. μ΄λ ‡κ²Œ ν•˜λ©΄ 데이터λ₯Ό λΆˆλŸ¬μ˜€λŠ” μž‘μ—…κ³Ό UI ν‘œν˜„μ„ κΉ¨λ—ν•˜κ²Œ 뢄리할 수 있으며, 버그 λ°œμƒ μ‹œ κ±°λŒ€ν•œ μ „μ—­ 폴더λ₯Ό λ’€μ§ˆ ν•„μš” 없이 νŠΉμ • κΈ°λŠ₯ 폴더 λ‚΄λΆ€λ§Œ ν™•μΈν•˜λ©΄ λ˜λ―€λ‘œ μœ μ§€λ³΄μˆ˜κ°€ 훨씬 μ‰¬μ›Œμ§‘λ‹ˆλ‹€ [5, 9]. * **싀무 팁 및 ν‘œμ€€ν™” μ„€μ •** * ν”„λ‘œμ νŠΈ μ΄ˆκΈ°ν™” μ‹œ `src/` 디렉토리λ₯Ό μ‚¬μš©ν•˜μ—¬ `tailwind.config.ts` λ“± μ„€μ • 파일과 μ†ŒμŠ€ μ½”λ“œλ₯Ό λΆ„λ¦¬ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€ [10]. * κΉ”λ”ν•œ μ½”λ“œ μž‘μ„±μ„ μœ„ν•΄ `tsconfig.json`μ—μ„œ μ ˆλŒ€ 경둜(`@/components/...`)λ₯Ό μ„€μ •ν•˜μ—¬ μˆ˜λ§Žμ€ μƒλŒ€ 경둜(`../../../`) μž‘μ„±μ„ λ°©μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€ [7, 10, 11]. * API ν˜ΈμΆœμ„ κΈ°λŠ₯λ³„λ‘œ 쀑앙 μ§‘μ€‘ν™”ν•˜κ³  곡유 ν΄λ”μ˜ μ»΄ν¬λ„ŒνŠΈλ₯Ό μž¬μ‚¬μš©ν•˜λŠ” λ“± 계측을 λ‚˜λˆ„λ©΄ ν™•μž₯ 및 λ¦¬νŒ©ν† λ§ μ‹œ μ•ˆμ „μ„±μ΄ 맀우 λ†’μ•„μ§‘λ‹ˆλ‹€ [7, 8]. ## πŸ”— Knowledge Connections - **Related Topics:** [[React Server Components]], [[Tailwind CSS]], [[CSS Modules]], [[vanilla-extract]], [[Feature-Driven Architecture]] - **Projects/Contexts:** [[μ‹€λ¬΄μ—μ„œ CSS κ΄€λ¦¬ν•˜λŠ” 방법]], [[λŒ€κ·œλͺ¨ ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈ μ•„ν‚€ν…μ²˜]] - **Contradictions/Notes:** 기쑴에 Pages Router와 styled-components둜 잘 μž‘λ™ν•˜κ³  μžˆλŠ” ν”„λ‘œμ νŠΈλΌλ©΄ ꡳ이 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ ν•  ν•„μš”λŠ” μ—†μœΌλ‚˜, App Router둜 μ „ν™˜ν•˜κ³ μž ν•  경우 λ°˜λ“œμ‹œ Tailwind, CSS Modules, vanilla-extract 쀑 ν•˜λ‚˜λ‘œμ˜ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ„ κ³„νšν•΄μ•Ό ν•©λ‹ˆλ‹€ [3]. --- *Last updated: 2026-04-26*