-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #25 from Wannabe-Woowa-Article/llqqssttyy
νλ‘ νΈμλ λ§μ€ν°: κΈ°λ₯ λΆν λμμΈ(FSD) ν¨ν΄
- Loading branch information
Showing
1 changed file
with
274 additions
and
0 deletions.
There are no files selected for viewing
274 changes: 274 additions & 0 deletions
274
July/article/Frontend-Masters-Feature-Sliced-Design-Pattern.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,274 @@ | ||
## π [Frontend Masters: Feature-Sliced Design (FSD) Pattern](https://medium.com/stackademic/frontend-masters-feature-sliced-design-fsd-pattern-81416088b006) | ||
|
||
### ποΈ λ²μ λ μ§: 2024.07.17 | ||
|
||
### π§ λ²μν ν¬λ£¨: λ μ(κΉλ€μ) | ||
|
||
--- | ||
|
||
## νλ‘ νΈμλ λ§μ€ν°: κΈ°λ₯ λΆν λμμΈ (FSD) ν¨ν΄ | ||
|
||
![](https://miro.medium.com/v2/resize:fit:1400/format:webp/1*5cXXjXss-JfLz_4RNJu7Tg.jpeg) | ||
|
||
<br/> | ||
|
||
**볡μ‘ν νλ‘μ νΈλ₯Ό λ§μλ νΌμλΌκ³ μμν΄ λ³΄μΈμ. κΈ°λ₯ λΆν μ΄ μ΄λ»κ² μλνλμ§ μ΄ν΄νκΈ° μν΄ νΌμλ₯Ό ν μ‘°κ°μ© λλ λ΄ μλ€. κ΄λ¦¬νκΈ° μ½κ³ μ μ§λ³΄μνκΈ°μλ λ§μμ΅λλ€! π** | ||
|
||
μ΄μ μ Medium κΈμμ λ§νλ λ΄μ©μ λ°λ³΅νκ² μ΅λλ€. μ΄ κΈμ κΈΈμ΄μ§ κ²μ΄κ³ (μ μλκ² μ΄μ? π) μλ§λ μ΄ν΄νκΈ° μ‘°κΈ μ΄λ €μΈ μ μμ΅λλ€. νμ§λ§ ν λ² μ½κ³ μλ²½νκ² μ΄ν΄νκ² λλ©΄, μ΄μ λΉμ μ 10λ°° λ λμ νλ‘ νΈμλ κ°λ°μκ° λ κ²μ λλ€. π μ»€νΌ ν μ μ€λΉνμΈμ. βοΈ μ»€νΌλ₯Ό μΆ©λΆν λ§μμ§ μμΌλ©΄ 10λ°° κ°λ°μκ° λλ λ° λ μ€λ 걸릴 κ±°μμ. π | ||
|
||
<br/> | ||
|
||
--- | ||
|
||
<br/> | ||
|
||
μ λ μΉ λ° λͺ¨λ°μΌ μ ν리μΌμ΄μ μ κΈ°λ₯ μΈνΈλΌλ μμ λΆλΆμΌλ‘ λλμ΄ κ°μννλ κ²μ μ’μν©λλ€. κ° κΈ°λ₯ μΈνΈλ μ체 μ¬μ©μ μΈν°νμ΄μ€, λΉμ¦λμ€ λ‘μ§ λ° λ°μ΄ν° λ μ΄μ΄λ₯Ό κ°μ§κ³ μμ΄ κ΄λ¦¬νκΈ°κ° λ μ½μ΅λλ€. μ΄λ¬ν λ°©λ²μ κΈ°λ₯ λΆν λμμΈ (FSD)μ΄λΌκ³ νλ©°, μ»΄ν¬λνΈ κΈ°λ° μ κ·Ό λ°©μκ³Ό μ μ¬ν μ₯μ μ 곡μ ν©λλ€. FSDμμ νΉν λμ λλ μ μ μ¬μ©μ μ€μ¬ κΈ°λ₯μ μ΄μ μ λ§μΆ° μΉ λ° λͺ¨λ°μΌ μ ν리μΌμ΄μ μ λ κ΄λ¦¬νκΈ° μ¬μ΄ λΆλΆμΌλ‘ λΆν΄ν μ μλ€λ μ μ λλ€. | ||
|
||
<br/> | ||
|
||
--- | ||
|
||
<br/> | ||
|
||
## ꡬ쑰 | ||
|
||
> FSD λ°©λ²λ‘ μ μΈ κ°μ§ μΆμν μμ€μΌλ‘ ꡬμ±λ©λλ€: λ μ΄μ΄, μ¬λΌμ΄μ€, κ·Έλ¦¬κ³ μΈκ·Έλ¨ΌνΈμ λλ€. | ||
<br/> | ||
|
||
![](https://miro.medium.com/v2/resize:fit:1400/format:webp/1*exIzF4234oogpgybeG3xbg.jpeg) | ||
|
||
<br/> | ||
|
||
### λ μ΄μ΄ | ||
|
||
λΉμ μ μ±μ λ§μλ νΌμλ‘ μμν΄ λ³΄μΈμ. π (λλ―Έλ Έμμ μΌνλ κ°λ°μλ‘μ νΌμ λΉμ λ₯Ό μ¬μ©νλ κ²μ μ μμ°μ€λ¬μ΄ κΆλ¦¬μ λλ€. π) | ||
|
||
#### 1. κ³΅μ© λ μ΄μ΄ (μλ£ν μ μ₯μ€): | ||
|
||
- **λͺ¨λλ₯Ό μν μ¬λ£:** | ||
μ¬λ¬ μ¬λΌμ΄μ€μμ μ κ·Όν μ μλ μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈ, μ νΈλ¦¬ν°, ν , κ·Έλ¦¬κ³ μλΉμ€λ₯Ό ν¬ν¨ν©λλ€. (κ³΅ν΅ μ¬λ£μ λꡬλ₯Ό λͺ¨λκ° κ°μ Έκ° μ μλ 곡μ μ£Όλ°©μ΄λΌκ³ μκ°νμΈμ.) | ||
- **μμ:** | ||
- λ²νΌ, νΌ, λͺ¨λ¬, λ΄λΉκ²μ΄μ λ°μ κ°μ κ³΅ν΅ UI μμ (미리 μμ§λ μ±μμ μΉμ¦λ₯Ό μκ°νμΈμ) | ||
- λ°μ΄ν° ν¬λ§·ν μ΄λ κ²μ¦μ μν μ νΈλ¦¬ν° ν¨μ (λ μΉ΄λ‘μ΄ νΌμ 컀ν°μ κ°μ΅λλ€) | ||
- Redux, Zustand, Tanstack Queryμ κ°μ κΈλ‘λ² μν κ΄λ¦¬ μ루μ (μΌκ΄μ±μ μν λ μνΌ λΆκ³Ό κ°μ΅λλ€) | ||
|
||
#### 2. νλ‘μΈμ€ λ μ΄μ΄ (μ£Όλ°© μ§μ): | ||
|
||
- **μ΄μ¬ν μΌνλ μ °νλ€:** λ°±κ·ΈλΌμ΄λ μμ κ³Ό λ°μ΄ν° νμΉμ μ²λ¦¬νμ¬ νΌμ μ£Όλ°©μ΄ μννκ² μ΄μλλλ‘ ν©λλ€. (λ°μ£½, μμ€, ν νμ μ€λΉνκ³ λ² μ΄νΉ κ³Όμ μ μ‘°μ¨νλ νΌμ μ °νλ€μ μκ°νμΈμ.) | ||
- **μμ:** | ||
- μ¨λΌμΈ μμ€ν μμ νΌμ μ£Όλ¬Έμ κ°μ Έμ€κΈ° | ||
- νΌμκ° μ€λΉλμμ λ μλ¦Ό 보λ΄κΈ° | ||
- λ°°λ¬ κΈ°μ¬μ λ°μ΄ν° λκΈ°ννκΈ° | ||
|
||
#### 3. κΈ°λ₯ λ μ΄μ΄ (νΌμ μ¬λΌμ΄μ€): | ||
|
||
- **λ 립μ μ΄κ³ μκΈμμ‘±:** κ° μ¬λΌμ΄μ€λ νΉμ κΈ°λ₯μ μΊ‘μννλ©°, κ³ μ μ UI, λ‘μ§, λ°μ΄ν°λ₯Ό κ°μ§κ³ μμ΅λλ€. λ§μΉ κ°λ³ ν νμ΄ μλ νΌμ μ¬λΌμ΄μ€μ κ°μ΅λλ€. | ||
- **μμ:** | ||
- "νΌμ μ£Όλ¬Έ" μ¬λΌμ΄μ€: νΌμ μ ν, λ§μΆ€ μ€μ λ° κ²°μ λ₯Ό μ²λ¦¬ (ννΌλ‘λ, λ²μ―, μΆκ° μΉμ¦, μμΎ -μμμ§- λ±λ±) | ||
- "μ£Όλ¬Έ μΆμ " μ¬λΌμ΄μ€: μ£Όλ¬Έ μνμ μμ λ°°λ¬ μκ°μ νμ (νΌμ μΆμ κΈ°μ κ°μ) | ||
- "νΌμ 리뷰" μ¬λΌμ΄μ€: κ³ κ°μ΄ κ²½νμ νκ°νκ³ λκΈμ λ¬ μ μλλ‘ ν¨ (μ °νλ₯Ό μν νΌλλ°± μμ) | ||
|
||
#### 4. μ± λ μ΄μ΄ (νΌμ μ °ν): | ||
|
||
- **μ΄μ£Όλ°©μ₯:** μ 체 νΌμ μ μ μμ μ κ°λ νλ©°, μ΄λ€ μ¬λΌμ΄μ€λ₯Ό ꡬμΈμ§, κ³ κ°μκ² μ΄λ»κ² μ 곡ν μ§λ₯Ό κ²°μ ν©λλ€. (λ©λ΄λ₯Ό μ€κ³νκ³ , μλ‘μ΄ λ μνΌλ₯Ό λ§λ€λ©°, κ° νΌμκ° μλ²½νκ² μ리λλλ‘ λ³΄μ₯νλ λ§μ€ν° μ °νλ₯Ό μκ°νμΈμ.) | ||
|
||
#### 5. νμ΄μ§ λ μ΄μ΄ (νΌμ μ§μ΄): | ||
|
||
- **μ¬λΌμ΄μ€λ₯Ό λ°°μ΄:** μ¬λΌμ΄μ€λ₯Ό μλ―Έ μλ νμ΄μ§ λ μ΄μμμΌλ‘ ꡬμ±νμ¬ νΌμ μ¬λΌμ΄μ€λ₯Ό μ μλ λ°°λ¬ μμμ λ°°μ΄νλ κ²κ³Ό κ°μ΅λλ€. | ||
- **μμ:** | ||
- ννμ΄μ§: "μΆμ² νΌμ"μ "μ£Όλ¬Έ λ΄μ" μ¬λΌμ΄μ€λ₯Ό κ²°ν© | ||
- λ΄ κ³μ : "κ°μΈ μ 보"μ "μ£Όλ¬Έ μ νΈ μ€μ " μ¬λΌμ΄μ€λ₯Ό ν¬ν¨ | ||
|
||
#### 6. μμ ― λ μ΄μ΄ (ν₯μ λ£): | ||
|
||
- **μ νμ λ§ κ°νμ :** μ¬λΌμ΄μ€λ νμ΄μ§/νλ©΄ μ 체μ λΏλ¦΄ μ μλ μκ³ μ¬μ¬μ© κ°λ₯ν UI μ»΄ν¬λνΈλ‘, νΌμμ μΆκ° μλ μ λνλ κ²κ³Ό κ°μ΅λλ€. | ||
- **μμ:** | ||
- κ²μμ°½ (μ’μνλ νΌμλ₯Ό λΉ λ₯΄κ² μ°ΎκΈ° μν΄) | ||
- μ¬μ©μ μλ¦Ό ν¨λ (νΌμκ° μ€λΉλμμ λ μλ¦Ό) | ||
- λͺ¨λ¬ λνμμ (νΉλ³ μμ²μ΄λ νμΈμ μν΄) | ||
|
||
#### 5. μν°ν° λ μ΄μ΄ (μμ¬λ£): | ||
|
||
- **λ°μ΄ν°μ κ΅¬μ± μμ:** νΌμμ λ°κ°λ£¨, μ΄μ€νΈ, ν νκ³Ό κ°μ ν΅μ¬ λΉμ¦λμ€ μν°ν°λ₯Ό λνλ λλ€. | ||
- **μμ:** | ||
- μ¬μ©μ μν°ν° (κ³ κ° μ 보λ₯Ό μ μ₯) | ||
- νΌμ μν°ν° (νΌμ μ’ λ₯μ μ¬λ£ μ μ) | ||
- μ£Όλ¬Έ μν°ν° (μ£Όλ¬Έ μ 보λ₯Ό μΆμ ) | ||
|
||
<br/> | ||
|
||
_κΈ°μ΅ν΄μΌ ν μ£Όμ μ¬ν:_ | ||
|
||
- κ° λ μ΄μ΄λ λͺ νν μ± μκ³Ό μμ‘΄μ± λ°©ν₯μ κ°μ§κ³ μμ΅λλ€. | ||
- μ¬λΌμ΄μ€λ νΌμ μ¬λΌμ΄μ€κ° κ³΅ν΅ ν¬λ¬μ€νΈλ₯Ό 곡μ νλ κ²μ²λΌ μ μ μλ κ³μ½μ ν΅ν΄ μλ‘ μν΅ν μ μμ΅λλ€. | ||
- λͺ©νλ λͺ¨λνλκ³ λ 립μ μ΄λ©° μ½κ² ν μ€νΈν μ μλ μ¬λΌμ΄μ€λ₯Ό λ§λ€μ΄ "νΌμ" μ½λλ² μ΄μ€λ₯Ό λ κ΄λ¦¬νκΈ° μ½κ³ λ§μκ² λ§λλ κ²μ λλ€! | ||
|
||
<br/> | ||
|
||
_μΆκ° νΌμ λΉμ λ ΈνΈ:_ | ||
|
||
- μ£Όλ°© μ§μ(νλ‘μΈμ€)μ 무λ λ€μμ μΌνλ©°, μ¬λ£λ₯Ό μ€λΉνκ³ μνν νΌμ μ μ κ³Όμ μ 보μ₯ν©λλ€. | ||
- νΌμ μ °ν(μ±)λ λͺ¨λ μμ μ μ΄κ΄νλ©°, λ€μν νΌμ(κΈ°λ₯)λ₯Ό μ°½μ‘°νκ³ μ΄λ₯Ό μ΄λ»κ² μ 곡ν μ§(νμ΄μ§)λ₯Ό κ²°μ ν©λλ€. | ||
- μμ¬λ£(μν°ν°)λ μ΄λ€ νΌμμλ νμμ μ΄μ§λ§, κ³ κ°μκ² νμ 보μ΄λ κ²μ μλλλ€. μ΄λ€μ λͺ¨λ κ²μ κ°λ₯νκ² λ§λλ κΈ°μ΄μ λλ€. | ||
|
||
<br/> | ||
|
||
![](https://miro.medium.com/v2/resize:fit:1400/format:webp/1*URBFMm6YigIKqzyBlPiLhg.png) | ||
|
||
<br/> | ||
|
||
### μΈκ·Έλ¨ΌνΈ (ν ν): | ||
|
||
- **μ¬λΌμ΄μ€ λ΄μ μ¬λ£:** μ¬λΌμ΄μ€κ° μμ ν κΈ°λ₯μ΄λΌλ©΄, κ·Έκ²μ μ’ μ’ μΈκ·Έλ¨ΌνΈλΌκ³ λΆλ¦¬λ μμ λΆλΆλ€λ‘ ꡬμ±λ©λλ€. μ΄λ νΌμ μ¬λΌμ΄μ€λ₯Ό ꡬμ±νλ κ°λ³ ν νκ³Ό κ°μ΅λλ€. | ||
- **νΉμ μμ μ μ§μ€:** κ° μΈκ·Έλ¨ΌνΈλ μ¬λΌμ΄μ€ λ΄μμ λͺ νν μ± μμ κ°μ§λ©°, νΉμ UI μμ, λ°μ΄ν° μμ , λλ λ‘μ§μ μ²λ¦¬ν©λλ€. | ||
- **μμ:** | ||
- **"νΌμ μ£Όλ¬Έ" μ¬λΌμ΄μ€ λ΄μμ:** | ||
- "νΌμ λ©λ΄" μΈκ·Έλ¨ΌνΈ: μ¬μ© κ°λ₯ν νΌμ μ΅μ κ³Ό κ°κ²©μ νμν©λλ€. | ||
- "ν ν μ νκΈ°" μΈκ·Έλ¨ΌνΈ: κ³ κ°μ΄ μνλ ν νμ μ νν μ μλλ‘ ν©λλ€. | ||
- "κ²°μ μμ" μΈκ·Έλ¨ΌνΈ: κ²°μ λ° λ°°λ¬ μ 보λ₯Ό μμ§ν©λλ€. | ||
|
||
#### **λ React μ€λ½κ²:** | ||
|
||
κ° μ¬λΌμ΄μ€λ λ€μ μΈκ·Έλ¨ΌνΈ μ€ νλ λλ μ¬λ¬ κ°λ‘ λλ©λλ€: | ||
|
||
- `ui/:` μ¬μ©μ μΈν°νμ΄μ€ μ»΄ν¬λνΈ λ° UI κ΄λ ¨ λ‘μ§ | ||
- `model/:` λΉμ¦λμ€ λ‘μ§ (μ€ν μ΄, μ‘μ , μ΄ννΈ, 리λμ λ±) | ||
- `lib/:` μΈνλΌ λ‘μ§ (μ νΈλ¦¬ν°/ν¬νΌ) | ||
- `config/:` λ‘컬 κ΅¬μ± (μμ, μ΄κ±°ν, λ©ν μ 보) | ||
- `api/:` API μμ² λ‘μ§ (API μΈμ€ν΄μ€, μμ² λ±) | ||
|
||
#### **κΈ°μ΅ν΄μΌ ν μ£Όμ μ¬ν:** | ||
|
||
- μ¬λΌμ΄μ€λ λ ν¬κ³ μκΈμμ‘±νλ κΈ°λ₯μ΄λ©°, μΈκ·Έλ¨ΌνΈλ μ¬λΌμ΄μ€ λ΄μ λ μκ³ μ§μ€λ λΆλΆμ λλ€. | ||
- κ° μ¬λΌμ΄μ€λ μ¬λ¬ μΈκ·Έλ¨ΌνΈλ₯Ό κ°μ§ μ μμΌλ©°, μ΄λ νΌμ μ¬λΌμ΄μ€κ° λ€μν ν νμ κ°μ§ μ μλ κ²κ³Ό κ°μ΅λλ€. | ||
- λͺ©νλ μ μ‘°μ§λ λͺ¨λν μ½λλ₯Ό λ§λ€μ΄ μ΄ν΄νκ³ κ°λ°νκ³ μ μ§λ³΄μνκΈ° μ½κ² νλ κ²μ λλ€. λ§μΉ νΌμμ κ°κΈ° λ€λ₯Έ λ§μ λνλ μλ¦λ΅κ² λ°°μ΄λ ν νμ²λΌ λ§μ΄μ£ ! | ||
|
||
<br/> | ||
|
||
--- | ||
|
||
> μ§κΈκΉμ§ μ½μ λ΄μ©μ μμ μ½λλ‘ νννλ©΄ μ΄λ»κ² λ κΉμ? | ||
#### 1. ν΄λ ꡬ쑰(νΌμ μ£Όλ°©) | ||
|
||
<br/> | ||
|
||
![](https://miro.medium.com/v2/resize:fit:1400/format:webp/1*G9DDFy4VZaGCMaogGOduIw.png) | ||
|
||
<br/> | ||
|
||
#### 2. νΌμ μ£Όλ¬Έ μ¬λΌμ΄μ€([μμ€νΈλΌλ°κ°μ](https://www.google.com/search?sca_esv=3a435d22dd23e419&sca_upv=1&sxsrf=ADLYWILLw7hzQVVI4CwvLXqolX_gxgaErw:1721216448127&q=%EC%97%91%EC%8A%A4%ED%8A%B8%EB%9D%BC%EB%B0%94%EA%B0%84%EC%9E%90&si=ACC90nxKpahzDMmxbw_9hLJvJAK3JpogdOEvfA_AFzr5M9qXFLtVutMThXFukBvQMHmxCUo98PKG-n8h7IenCaWTLvXp39OfIY-hzeSbUHXL7aFM9vMT2EIV0OaiDB_2kZcoU9H2D81NzbpZidVQ3ALbj50w-e1yA4X_PRJ47qPIcPKyjZX5xKX1V_tocw3jEz5EAZ3H91MYiy1nXF8e-Vb-beZQgLJcfvT6-SvG712RvwEGgtdwhaUjY5ekx53eLaxG6Sv9Snd_htnQKZmzPPy5XO6UBylgaQ%3D%3D&sa=X&ved=2ahUKEwjil-P3_q2HAxUklFYBHWYqB00Q6RN6BAgZEAE)) | ||
|
||
```tsx | ||
// features/order-pizza/slice.tsx | ||
import React from 'react'; | ||
|
||
interface OrderPizzaSliceProps { | ||
// ... props | ||
} | ||
|
||
const OrderPizzaSlice: React.FC<OrderPizzaSliceProps> = ( | ||
{ | ||
/* ...props */ | ||
} | ||
) => { | ||
// ... μ¬λΌμ΄μ€ λ‘μ§κ³Ό μν κ΄λ¦¬ | ||
|
||
return ( | ||
<div> | ||
<PizzaMenu /> | ||
<ToppingSelector /> | ||
<CheckoutForm /> | ||
</div> | ||
); | ||
}; | ||
|
||
export default OrderPizzaSlice; | ||
``` | ||
|
||
<br/> | ||
|
||
#### 3. νΌμ λ©λ΄ μΈκ·Έλ¨ΌνΈ(λμ° λ² μ΄μ€) | ||
|
||
```tsx | ||
// features/order-pizza/components/PizzaMenu.tsx | ||
import React from 'react'; | ||
|
||
interface PizzaMenuProps { | ||
// ... νΌμ μ΅μ λ€ | ||
} | ||
|
||
const PizzaMenu: React.FC<PizzaMenuProps> = ( | ||
{ | ||
/* ...props */ | ||
} | ||
) => { | ||
// ... νΌμ μ΅μ μ fetchνκ³ νλ©΄μ 그리기 | ||
|
||
return <ul>{/* List of pizza options */}</ul>; | ||
}; | ||
|
||
export default PizzaMenu; | ||
``` | ||
|
||
<br/> | ||
|
||
#### 4. ννμ΄μ§ (νΌμ μ§μ΄λ): | ||
|
||
Feature-Sliced Design (FSD)μ νΌμλ₯Ό κΉλνκ² κ°λ³ μ‘°κ°μΌλ‘ λλμ΄ κ° μ‘°κ°μ΄ κ³ μ μ ν νκ³Ό λ§μ κ°μ§λ κ²κ³Ό κ°μ΅λλ€. μ΄ μ κ·Ό λ°©μμ μ₯μ κ³Ό λ¨μ μ λ€μκ³Ό κ°μ΅λλ€. | ||
|
||
```tsx | ||
// pages/HomePage.tsx | ||
import React from 'react'; | ||
import OrderPizzaSlice from '../features/order-pizza/slice'; | ||
|
||
const HomePage: React.FC = () => { | ||
return ( | ||
<div> | ||
<h1>Welcome to Domino's Pizza!</h1> | ||
<OrderPizzaSlice /> | ||
</div> | ||
); | ||
}; | ||
|
||
export default HomePage; | ||
``` | ||
|
||
<br/> | ||
|
||
#### μ½λμμ μ»μ΄μΌ ν μ£Όμ λ΄μ©: | ||
|
||
- **λͺ νν ν΄λ ꡬ쑰:** κ° μ¬λΌμ΄μ€λ κ³ μ μ ν΄λλ₯Ό κ°μ§κ³ μμ΄ κ·Έ μμ μ»΄ν¬λνΈμ λ‘μ§μ 체κ³μ μΌλ‘ κ΄λ¦¬ν©λλ€. | ||
- **λ 립μ μΈ μ¬λΌμ΄μ€:** κ° μ¬λΌμ΄μ€λ λ 립μ μΌλ‘ κ°λ°λκ³ ν μ€νΈλ μ μμΌλ©°, μκΈμμ‘±νλ νΌμμ κ°μ΅λλ€. | ||
- **μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈ:** κ³΅ν΅ μ»΄ν¬λνΈ(λ²νΌ, μ λ ₯λ λ±)λ μΌκ΄μ±κ³Ό ν¨μ¨μ±μ μν΄ μ¬λ¬ μ¬λΌμ΄μ€μμ μ¬μ©ν μ μμ΅λλ€. | ||
- **νμ΄μ§ λ΄ κ΅¬μ±:** νμ΄μ§λ μ¬λΌμ΄μ€λ₯Ό κ²°ν©νμ¬ μλ―Έ μλ λ μ΄μμμ λ§λλλ°, μ΄λ νΌμ μ¬λΌμ΄μ€λ₯Ό μ μμ λ°°μ΄νλ κ²κ³Ό κ°μ΅λλ€. | ||
- **κΈ°μ΅νμΈμ:** μ΄κ²μ λ¨μνλ μμ μ λλ€. μ€μ FSDλ λ 볡μ‘ν μν κ΄λ¦¬, λ°μ΄ν° νμΉ λ° μ¬λΌμ΄μ€ κ°μ ν΅μ μ ν¬ν¨ν©λλ€. κ·Έλ¬λ μ΄ μμ λ FSDλ₯Ό μ¬μ©νμ¬ React μ±μ μ‘°μ§νλ ν΅μ¬ μμΉμ 보μ¬μ€λλ€. | ||
|
||
<br/> | ||
|
||
### μ’μ μ (ν ν λΆλΆ): π | ||
|
||
- **κ΄λ¦¬ μ©μ΄:** κ°κ°μ κΈ°λ₯μ΄ λ 립μ μΈ νΌμ μ‘°κ°μ²λΌ μκΈμμ‘±νμ¬, μ½λλ₯Ό μ΄ν΄νκ³ , μμ νκ³ , μ λ°μ΄νΈνκΈ° μ½μ΅λλ€. νλμ λΆλΆμ λ³κ²½ν λ λλ―Έλ Έ ν¨κ³Όκ° λ°μνμ§ μμ΅λλ€! | ||
- **νμ₯μ±:** λ λ§μ κΈ°λ₯μ΄ νμνμ κ°μ? κ·Έλ₯ μ¬λΌμ΄μ€λ₯Ό μΆκ°νλ©΄ λ©λλ€! FSDλ μ±μ΄ μλ‘μ΄ μꡬμ λ§κ² μ°μνκ² μ±μ₯ν μ μλλ‘ λμμ€λλ€. λ§μΉ μ±μ νΌμμ ννΌλ‘λλ₯Ό μΆκ°νλ κ²μ²λΌμ. | ||
- **λΉ λ₯Έ κ°λ°:** μλ‘ λ€λ₯Έ νμ΄ λμμ λ³λμ μ¬λΌμ΄μ€λ₯Ό μμ ν μ μμ΄ κ°λ° μλκ° λΉ¨λΌμ§λλ€. λ§μΉ μ¬λ¬ μ °νκ° λμμ νΌμλ₯Ό λ§λλ κ²κ³Ό κ°μ΅λλ€. | ||
- **λͺ νν μμ κΆ:** κ° μ¬λΌμ΄μ€μλ μ§μ λ "νΌμμ΄μ¬λ‘(pizzaiolo)"κ° μμ΄, κ°λ°μκ° κ·Έ μ¬λΌμ΄μ€μ νμ§κ³Ό μ±λ₯μ λν΄ μ± μμ μ§λλ€. μ΄λ κ° μ °νκ° μμ μ μ°½μλ¬Όμ μλΆμ¬μ κ°λ κ²κ³Ό λΉμ·ν©λλ€. | ||
- **ν μ€νΈ μ©μ΄:** ν μ€νΈλ κ°κ°μ μ¬λΌμ΄μ€κ° μ μ΅μλμ§ νμΈνλ κ²μ²λΌ λ μ§μ€μ μ΄κ³ ν¨μ¨μ μΌλ‘ μνλ©λλ€. | ||
|
||
### μ’μ§ μμ μ (ν¬λ¬μ€νΈ): ππ» | ||
|
||
- **κ³νμ μ΄λ €μ:** μ¬λΌμ΄μ€κ° μννκ² μλνλ €λ©΄ μ λ§λ¬Όλ €μΌ ν©λλ€. μ΄λ μΉμ¦κ° νλ¬λ΄λ¦¬μ§ μλλ‘ μ‘°κ°λ€μ μ λ§μΆλ κ²κ³Ό κ°μ΅λλ€. νΌμ λνΌλμ νΌνκΈ° μν΄ μ μ€ν κ³νκ³Ό μν΅μ΄ μ€μν©λλ€. | ||
- **νμ΅ κ³‘μ :** μλ‘μ΄ μ¬λλ€μ΄ "νΌμ"μ λΆμ°λ νΉμ±μ μ²μμλ νΌλμ€λ¬μΈ μ μμ΅λλ€. νμΈμ ν μ‘°κ°μ μ΄λμ μ°Ύμμ§ μμλ΄λ κ²κ³Ό λΉμ·ν©λλ€. μ΄λ€μ μλ΄νκΈ° μν΄ μ’μ λ¬Έμνκ° νμμ μ λλ€. | ||
- **νμν¬μ μΆκ°μ μΈ λ Έλ ₯:** μ¬λΌμ΄μ€ κ°μ μνν μν΅κ³Ό μ°κ²°μ 보μ₯νλ λ°λ μκ°κ³Ό μ£Όμκ° νμν©λλ€. μ΄λ μ °νλ€μ΄ μλ²½ν νΌμλ₯Ό ν¨κ» λ§λλ κ²μ μ‘°μ¨νλ κ²κ³Ό κ°μ΅λλ€. | ||
- **μ μ¬μ μΈ μ€λ³΅:** λλλ‘ λ μ¬λΌμ΄μ€κ° λΉμ·ν μ¬λ£λ₯Ό κ°μ§ μ μμ΅λλ€. μλ₯Ό λ€μ΄ λͺ¨μ°¨λ λΌμ 리μ½νλ₯Ό λͺ¨λ μ¬μ©νλ κ²μ²λΌμ. λΆνμν μ€λ³΅μ νΌνκΈ° μν΄ μ μ€ν κ³νκ³Ό 곡μ μμμ΄ νμν©λλ€. | ||
- **λꡬμ νκ³:** FSDλ μμ§ λΉκ΅μ μλ‘μ΄ κ°λ μ΄μ΄μ, μ΄λ₯Ό μν΄ νΉλ³ν μ€κ³λ λꡬλ₯Ό μ°Ύλ κ²μ΄ μ λμ½ λͺ¨μμ νΌμ 컀ν°λ₯Ό μ°Ύλ κ²μ²λΌ μ΄λ €μΈ μ μμ΅λλ€. μ²μμλ μΆκ°μ μΈ λ Έλ ₯μ΄ νμν μ μμ΅λλ€. | ||
|
||
### μ 리 | ||
|
||
FSDλ ν¬κ³ 볡μ‘ν μ±μ νλ₯ν μ λ΅μ΄ λ μ μμ§λ§, λͺ¨λ νλ‘μ νΈμ λ§λ λ§λ₯ λ μνΌλ μλλλ€. νλ‘μ νΈμ ν¬κΈ°, ν, κ°λ° νκ²½μ κ³ λ €ν ν λμ μ κ²°μ νμΈμ. κ°μ₯ λ§μλ νΌμλ μ μ ν κΈ°μ κ³Ό μ¬λ£κ° μμΌλ©΄ λ§λ€κΈ° μ΄λ €μΈ μ μλ€λ μ μ κΈ°μ΅νμΈμ! | ||
|
||
> μ μν μ : κ²½ν μμ€μ μκ΄μμ΄ κΉμ΄ μκ² νꡬνκ³ μΆλ€λ©΄, μ κ° μμ£Ό μ°Έκ³ νλ [곡μ λ¬Έμ](https://feature-sliced.design/docs)λ₯Ό μ΄ν΄λ³΄μΈμ. | ||
--- | ||
|
||
μ΄ κΈ°μ¬λ₯Ό μ¦κ²κ² μ½μΌμ ¨κΈ°λ₯Ό λ°λλλ€. μ΄ κΈ°μ¬κ° μ μ΅νκ±°λ λμμ΄ λμλ€λ©΄, μ»€νΌ ν μ μ¬μ£Όλ©° μ μμ μ μ§μνλ κ²μ κ³ λ €ν΄ μ£ΌμΈμ. μ¬λ¬λΆμ κΈ°μ¬λ μ΄λ° μ½ν μΈ λ₯Ό λ λ§μ΄ λ§λλ λ° λμμ΄ λ©λλ€. κ°μ 컀νΌλ‘ μ λ₯Ό λμ νλ €λ©΄ μ¬κΈ°λ₯Ό ν΄λ¦νμΈμ βοΈ. ν΄νΌ ν΄νΉ! π |