View Scaffolding κ°μ
μλ μμ±
λͺ©λ‘/νΌ λ·° μΉ UIλ‘ μμ±
νμ μμ
Entity κΈ°λ° μ»΄νμΌ νμ κ²μ¦
컀μ€ν°λ§μ΄μ§
μμ± ν μμ μμ ν μ μ΄
μΌκ΄μ±
ν΅μΌλ UI/UX λ² μ€νΈ νλν°μ€
View Scaffoldingμ΄λ?
λ¬Έμ : λ°λ³΅μ μΈ CRUD λ·° μμ±
μ ν΅μ μΈ κ°λ°μμλ κ° μν°ν°λ§λ€ λΉμ·ν CRUD νλ©΄μ μλμΌλ‘ λ°λ³΅ μμ±ν΄μΌ ν©λλ€. μλ μμ± μ λ¬Έμ μ :- μκ° λλΉ: λͺ©λ‘, μμ±, μμ νμ΄μ§λ₯Ό λͺ¨λ μμΌλ‘ μμ±
- μΌκ΄μ± λΆμ‘±: κ°λ°μλ§λ€ λ€λ₯Έ μ€νμΌ, λ€λ₯Έ ꡬ쑰
- μ μ§λ³΄μ μ΄λ €μ: μν°ν° λ³κ²½ μ λͺ¨λ λ·° μμ νμ
- μ€μ κ°λ₯μ±: νλ λλ½, μλͺ»λ νμ , μ ν¨μ± κ²μ¬ λλ½
- 보μΌλ¬νλ μ΄νΈ: ν μ΄λΈ, νΌ, λ²νΌ λ± λ°λ³΅ μ½λ
ν΄κ²°: μλ μ€μΊν΄λ©
Sonamuλ Entity μ μλ₯Ό κΈ°λ°μΌλ‘ κ΄λ¦¬μ νμ΄μ§ λ·°λ₯Ό μλ μμ±ν©λλ€. μ₯μ :- β¨ μ¦μ μμ±: μΉ UIλ‘ ν΄λ¦λ§μΌλ‘ λ·° μμ±
- β¨ νμ μμ : Entity νμ μ΄ μ»΄ν¬λνΈμ κ·Έλλ‘ λ°μ
- β¨ μΌκ΄λ UI: ν΅μΌλ λμμΈ μμ€ν
- β¨ λ² μ€νΈ νλν°μ€: κ²μ¦λ ν¨ν΄ μ μ©
- ⨠컀μ€ν°λ§μ΄μ§ κ°λ₯: μμ± ν νμν λΆλΆλ§ μμ
β80%λ μλμΌλ‘, 20%λ 컀μ€ν°λ§μ΄μ§βλλΆλΆμ CRUD κΈ°λ₯μ μλ μμ±νκ³ , νΉλ³ν λΉμ¦λμ€ λ‘μ§λ§ μΆκ°λ‘ ꡬνν©λλ€.
μ€μΊν΄λ© μ€ν
Sonamu μΉ UI μ¬μ©
Sonamuλ μΉ κΈ°λ° κ΄λ¦¬ UIλ₯Ό μ 곡ν©λλ€.- Sonamu UI μ μ
- βScaffoldβ λ©λ΄ μ ν
- Entity μ ν (μ: User)
- βGenerate View Listβ λ²νΌ ν΄λ¦ β
index.tsxμμ± - βGenerate View Formβ λ²νΌ ν΄λ¦ β
form.tsxμμ±
CLI λͺ
λ Ήμ΄λ νμ¬ λΉνμ±νλμ΄ μμ΅λλ€. λ·° μμ±μ Sonamu μΉ UIλ₯Ό ν΅ν΄μλ§ κ°λ₯ν©λλ€.
μμ±λλ νμΌ κ΅¬μ‘°
- index.tsx: λͺ©λ‘ ν μ΄λΈμ΄ μ§μ ν¬ν¨λ νμ΄μ§
- form.tsx: μμ±κ³Ό μμ μ νλμ νΌμΌλ‘ ν΅ν©
μμ±λ λ·° ꡬ쑰
λͺ©λ‘ νμ΄μ§ (index.tsx)
λͺ©λ‘μ ν μ΄λΈλ‘ νμνκ³ νμ΄μ§λ€μ΄μ , κ²μ κΈ°λ₯μ μ 곡ν©λλ€.- νμ΄μ§λ€μ΄μ
- κ²μ νν°
- βCreate Newβ λ²νΌ
- βEditβ λ²νΌ (κ° ν)
- ν μ΄λΈμ΄ νμ΄μ§μ μ§μ ν¬ν¨ (λ³λ μ»΄ν¬λνΈ μμ)
νΌ νμ΄μ§ (form.tsx)
μμ±κ³Ό μμ μ νλμ νΌμΌλ‘ ν΅ν©ν©λλ€.- μμ±/μμ ν΅ν©: URL νλΌλ―Έν°(
?id=)λ‘ λͺ¨λ κ΅¬λΆ - μμ μ κΈ°μ‘΄ λ°μ΄ν° μλ λ‘λ
- μ ν¨μ± κ²μ¬
- μ μ₯ μ€ λ²νΌ λΉνμ±ν
- βBack to Listβ λ²νΌ
μμ± νμΌμ νΉμ§
ν΅ν© ꡬ쑰
Sonamuμ μ€μΊν΄λ©μ μ΅μνμ νμΌλ‘ ꡬμ±λ©λλ€: μ ν΅μ μΈ κ΅¬μ‘° (볡μ‘ν¨):- νμΌ μ μ΅μν
- νμΌ κ° μ΄λ κ°μ
- μ μ§λ³΄μ κ°νΈ
- μ½λ μμ§λ λμ
λΌμ°ν ν¨ν΄
컀μ€ν°λ§μ΄μ§
μμ± ν μμ
μμ±λ νμΌμ μμ ν μμ κ°λ₯ν©λλ€.useTypeFormμΌλ‘ νΌ μ κ·Έλ μ΄λ (κΆμ₯)
μλ μμ±λ νΌμ κΈ°λ³Έμ μΌλ‘useStateμ μ§μ μ΄λ²€νΈ νΈλ€λ¬λ₯Ό μ¬μ©ν©λλ€. μ΄λ₯Ό useTypeFormμΌλ‘ μ
κ·Έλ μ΄λνλ©΄ ν¨μ¬ κ°κ²°νκ³ νμ
μμ ν μ½λκ° λ©λλ€.
μμ±λ μ½λ (κΈ°λ³Έ):
- β μ½λλ 50% κ°μ: useState, μ΄λ²€νΈ νΈλ€λ¬ μ κ±°
- β μλ μ ν¨μ± κ²μ¬: SaveParams μ€ν€λ§ κΈ°λ°
- β νμ μμ : μ»΄νμΌ νμ μλ¬ κ°μ§
- β μλ¬ μ²λ¦¬ ν΅ν©: νλλ³ μλ¬ λ©μμ§ μλ νμ
λ³λ μ»΄ν¬λνΈλ‘ λΆλ¦¬
νμνλ©΄ μλμΌλ‘ μ»΄ν¬λνΈλ₯Ό λΆλ¦¬ν μ μμ΅λλ€:μμΈ νμ΄μ§ μΆκ°
μλ μμ±λμ§ μλ μμΈ νμ΄μ§λ μλμΌλ‘ μΆκ°:λ² μ€νΈ νλν°μ€
1. μμ± ν μ¦μ Git 컀λ°
2. κ³΅ν΅ λ‘μ§μ HookμΌλ‘ μΆμΆ
3. μ€νμΌμ μ μμΌλ‘ κ΄λ¦¬
μ£Όμμ¬ν
λ€μ λ¨κ³
컀μ€ν μ»΄ν¬λνΈ
μ»΄ν¬λνΈ μ»€μ€ν°λ§μ΄μ§
ID Async Select
κ΄κ³ λ°μ΄ν° μ ν
Search Input
κ²μ μ»΄ν¬λνΈ
Service μ¬μ©νκΈ°
Service ν΅ν©