--- id: [[P-Reinforce]]-AUTO-59CADB category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Code Splitting Lazy Loading (μ½”λ“œ λΆ„ν•  및 μ§€μ—° λ‘œλ”©)" --- # [[Code Splitting Lazy Loading (μ½”λ“œ λΆ„ν•  및 μ§€μ—° λ‘œλ”©)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > κ±°λŒ€ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€μ„ μž‘μ€ λ‹¨μœ„λ‘œ λ‚˜λˆ„κ³ , μ‚¬μš©μžκ°€ λ‹Ήμž₯ ν•„μš”λ‘œ ν•˜μ§€ μ•ŠλŠ” μ»΄ν¬λ„ŒνŠΈλ‚˜ 라이브러리의 λ‘œλ”©μ„ μ§€μ—°μ‹œμΌœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 초기 λ‘œλ”© 속도와 핡심 μ›Ή μ§€ν‘œ(FCP, LCP)λ₯Ό λΉ„μ•½μ μœΌλ‘œ κ°œμ„ ν•˜λŠ” μ΅œμ ν™” κΈ°λ²•μž…λ‹ˆλ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) **1. λ™μž‘ 원리 및 ν•„μš”μ„±** 일반적인 React 앱은 λͺ¨λ“  μ½”λ“œλ₯Ό ν•˜λ‚˜μ˜ 큰 λ²ˆλ“€λ‘œ λ¬Άμ–΄ μ œκ³΅ν•˜λ―€λ‘œ μ‚¬μš©μžκ°€ μ‚¬μš©ν•˜μ§€ μ•Šμ„ κΈ°λŠ₯κΉŒμ§€ λ‹€μš΄λ‘œλ“œν•˜λŠλΌ 초기 λ‘œλ”©μ΄ 크게 μ§€μ—°λ©λ‹ˆλ‹€. "초기 νŽ˜μ΄μ§€ λ‘œλ“œ μ‹œ 화면에 μ¦‰μ‹œ 보이지 μ•ŠλŠ” κΈ°λŠ₯은 λ Œλ”λ§μ„ μ°¨λ‹¨ν•΄μ„œλŠ” μ•ˆ λœλ‹€"λŠ” 원칙에 따라, μ½”λ“œλ₯Ό λΆ„ν• ν•˜λ©΄ λ°˜μ‘μ„±(TTI)을 높이고 데이터 전솑 λΉ„μš©μ„ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€. 전체 λ²ˆλ“€ 크기λ₯Ό μ΅œλŒ€ 20~70%κΉŒμ§€ μ€„μ΄λŠ” 것이 κ°€λŠ₯ν•©λ‹ˆλ‹€. **2. μ „λž΅ 1: 라우트 기반 λΆ„ν•  (Route-level Splitting)** κ°€μž₯ 적은 λ…Έλ ₯으둜 κ°€μž₯ 큰 효과(초기 λ²ˆλ“€ 60~80% κ°μ†Œ)λ₯Ό λ³Ό 수 μžˆλŠ” λ°©μ‹μž…λ‹ˆλ‹€. `React.lazy`와 React Routerλ₯Ό ν™œμš©ν•˜μ—¬, μ‚¬μš©μžκ°€ ν˜„μž¬ λ°©λ¬Έν•œ νŽ˜μ΄μ§€μ— ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈλ§Œ λ‘œλ“œν•˜κ³  λ‹€λ₯Έ νŽ˜μ΄μ§€μ˜ μ½”λ“œλŠ” λΆ„ν• ν•©λ‹ˆλ‹€. **3. μ „λž΅ 2: μ»΄ν¬λ„ŒνŠΈ 기반 μ§€μ—° λ‘œλ”© (Component-level Lazy Loading)** ν™”λ©΄ ν•˜λ‹¨(Below the fold)에 μœ„μΉ˜ν•˜κ±°λ‚˜ 무거운 UI μš”μ†Œ(예: 3D λͺ¨λΈ, λ³΅μž‘ν•œ 차트, λΉ„λ””μ˜€ 에디터 λ“±)λ₯Ό `React.lazy`와 ``λ₯Ό μ΄μš©ν•΄ μ˜¨λ””λ§¨λ“œ(On-demand) λ°©μ‹μœΌλ‘œ λΆˆλŸ¬μ˜΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ React Three Fiber(R3F) ν™˜κ²½μ—μ„œλŠ” λ Œλ”λ§ λΉ„μš©μ΄ 큰 3D λͺ¨λΈμ„ `}>`둜 감싸 μ§€μ—° λ‘œλ”©ν•˜λŠ” 것이 ν•„μˆ˜μ μž…λ‹ˆλ‹€. **4. μ „λž΅ 3: 라이브러리 λΆ„ν•  (Library-level Splitting)** PDF μƒμ„±μ΄λ‚˜ μ—‘μ…€ 내보내기 λ“± νŠΉμ • μ•‘μ…˜μ΄ 일어날 λ•Œλ§Œ ν•„μš”ν•œ 무거운 μ„œλ“œνŒŒν‹° 라이브러리λ₯Ό 동적 `import()`둜 λΆˆλŸ¬μ™€ 메인 μžλ°”μŠ€ν¬λ¦½νŠΈ λ²ˆλ“€μ—μ„œ μ™„μ „νžˆ μ œμ™Έμ‹œν‚΅λ‹ˆλ‹€. **5. UX μ΅œμ ν™” 및 μ£Όμ˜μ‚¬ν•­** - **μŠ€μΌˆλ ˆν†€ UI (Skeleton UI):** μ§€μ—° λ‘œλ”©μ΄ λ°œμƒν•  λ•Œ 화면이 μΌμ‹œμ μœΌλ‘œ λΉ„μ–΄λ³΄μ΄λŠ” ν˜„μƒμ„ 막고 λˆ„μ  λ ˆμ΄μ•„μ›ƒ 이동(CLS)을 λ°©μ§€ν•˜κΈ° μœ„ν•΄, `` 내뢀에 μ΅œμ’… μ½˜ν…μΈ μ™€ μœ μ‚¬ν•œ 크기의 μŠ€μΌˆλ ˆν†€ UIλ‚˜ λ‘œλ”© 인디케이터λ₯Ό λ°˜λ“œμ‹œ μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. - **μ§€μ—° λ‘œλ”©μ˜ 금기:** 초기 λ Œλ”λ§μ— μ¦‰μ‹œ ν•„μš”ν•˜κ±°λ‚˜ ν™”λ©΄ μ΅œμƒλ‹¨(Above-the-fold)에 μœ„μΉ˜ν•œ 핡심 μ»΄ν¬λ„ŒνŠΈλŠ” μ ˆλŒ€ μ§€μ—° λ‘œλ”©ν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[React Performance Optimization]], React.lazy & Suspense, [[Core Web Vitals]] (FCP, LCP, CLS), [[React [[Server Components]] (RSC)]] - **Projects/Contexts:** λŒ€κ·œλͺ¨ SPA 초기 λ‘œλ”© 속도 κ°œμ„ , Three.js / React Three Fiber μžμ‚° μ΅œμ ν™” - **Contradictions/Notes:** μ½”λ“œ 뢄할은 초기 λ‘œλ“œ 속도λ₯Ό 크게 λ†’μ—¬μ£Όμ§€λ§Œ, λͺ¨λ“  μ»΄ν¬λ„ŒνŠΈλ₯Ό λ¬΄λΆ„λ³„ν•˜κ²Œ λΆ„ν• ν•  경우 μ‚¬μš©μžκ°€ μƒν˜Έμž‘μš©μ„ ν•  λ•Œλ§ˆλ‹€ λ„€νŠΈμ›Œν¬ μ§€μ—°κ³Ό λ‘œλ”© μŠ€ν”Όλ„ˆλ₯Ό λ§ˆμ£Όν•˜κ²Œ λ˜μ–΄ 였히렀 UXλ₯Ό 크게 훼손할 수 μžˆμŠ΅λ‹ˆλ‹€. 항상 μ‚¬μš©μžμ˜ μ—¬μ •(User Flow)을 μ˜ˆμΈ‘ν•˜κ³  μ μ ˆν•œ λ‹¨μœ„λ‘œ λ²ˆλ“€μ„ λ¬ΆλŠ” μ „λž΅μ  접근이 ν•„μš”ν•©λ‹ˆλ‹€. --- _Last updated: 2026-04-14_ ---