@@ -4,57 +4,75 @@ sidebar_position: 1
44
55# ๊ฐ์
66
7- ** Feature-Sliced Design (FSD)** ๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌ์กฐ๋ฅผ ์ํ ์ํคํ
์ฒ ๋ฐฉ๋ฒ๋ก ์
๋๋ค.
8- ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ๊ณ ๊ตฌ์ฑํ ์ง๋ฅผ ๋ช
ํํ ์ ์ํ์ฌ, ๋ณํํ๋ ๋น์ฆ๋์ค ์๊ตฌ ์์์๋ ํ๋ก์ ํธ๋ฅผ ์ดํดํ๊ธฐ ์ฝ๊ณ ์์ ์ ์ผ๋ก ์ ์งํ ์ ์๋๋ก ๋์ต๋๋ค.
7+ ** Feature-Sliced Design (FSD)** ๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๋๋ฅผ ๊ตฌ์กฐํํ๊ธฐ ์ํ ์ํคํ
์ฒ ๋ฐฉ๋ฒ๋ก ์
๋๋ค.
8+ ์ด ๋ฐฉ๋ฒ๋ก ์ ๋ชฉ์ ์ ** ์๊ตฌ์ฌํญ์ด ๋ฐ๋์ด๋ ์ฝ๋ ๊ตฌ์กฐ๊ฐ ๋ฌด๋์ง์ง ์๊ณ , ์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๊ฒ** ์
๋๋ค.
9+ FSD๋ ์ฝ๋๋ฅผ ** ์ผ๋ง๋ ๋ง์ ์ฑ
์์ ๊ฐ์ง๋์ง** ์ ** ๋ค๋ฅธ ๋ชจ๋์ ์ผ๋ง๋ ์์กดํ๋์ง** ์ ๋ฐ๋ผ ๊ณ์ธตํํฉ๋๋ค.
910
10- FSD๋ ๋จ์ํ ๊ท์น ์งํฉ์ด ์๋๋ผ ์ค๋ฌด๋ฅผ ์ํ ๋๊ตฌ ์ฒด๊ณ๋ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
11- - ํ๋ก์ ํธ ์ํคํ
์ฒ๋ฅผ ๊ฒ์ฌํ๋ [ Linter] [ ext-steiger ]
12- - CLI ๋ฐ IDE ๊ธฐ๋ฐ์ [ ํด๋ ์์ฑ๊ธฐ] [ ext-tools ]
13- - ๋ค์ํ ๊ตฌ์กฐ๋ฅผ ์ฐธ๊ณ ํ ์ ์๋ [ ์์ ๋ชจ์] [ examples ]
11+ FSD๋ ๋จ์ํ ํด๋ ๊ท์น์ด ์๋๋๋ค.
12+ ์ค์ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ณ ์ ์งํ๊ธฐ ์ํ ๋๊ตฌ๋ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
13+
14+ - [ Steiger] [ ext-steiger ] โ ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ FSD ๊ธฐ์ค์ ๋ง๋์ง ๊ฒ์ฌํฉ๋๋ค.
15+ - [ Awesome] [ ext-tools ] โ FSD ์์ ์ ๋๊ตฌ๋ฅผ ๋ชจ์๋ ์ฐธ๊ณ ๋ฆฌ์คํธ์
๋๋ค.
16+ - [ ์์ ๋ชจ์] [ examples ] โ ๋ค์ํ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋ ํด๋ ๊ตฌ์กฐ ์์๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
1417
1518## ๋ด ํ๋ก์ ํธ์ ์ ํฉํ ๊น์? { #is - it - right - for - me }
1619
17- FSD๋ ๋ค์ ์กฐ๊ฑด์ ํด๋นํ๋ฉด ๋์
ํ ์ ์์ต๋๋ค:
20+ FSD๋ ์น, ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ๋ฑ ** ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋๋ ํ๋ก์ ํธ์ ์ ์ด์ธ๋ฆฝ๋๋ค.**
21+ ๋จ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณด๋ค๋ ** ์ ํ๋ฆฌ์ผ์ด์
** ์ ๋ ์ ํฉํฉ๋๋ค.
1822
19- - ** ํ๋ก ํธ์๋** (์น, ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํฑ ๋ฑ)๋ฅผ ๊ฐ๋ฐํ๊ณ ์๊ณ
20- - ** ๋ผ์ด๋ธ๋ฌ๋ฆฌ** ๊ฐ ์๋ ** ์ ํ๋ฆฌ์ผ์ด์
** ์ ๊ฐ๋ฐํ๊ณ ์๋ค๋ฉด
23+ ๊ทธ๋ฆฌ๊ณ ํน์ ์ธ์ด๋ ํ๋ ์์ํฌ์ ์ ํ์ด ์๊ณ , Monorepo ํ๊ฒฝ์์๋ ๋จ๊ณ์ ์ผ๋ก ์ ์ฉํ ์ ์์ต๋๋ค.
2124
22- ์ธ์ด, UI ํ๋ ์์ํฌ, ์ํ ๊ด๋ฆฌ ๋๊ตฌ์ ๋ํ ์ ์ฝ์ ์์ต๋๋ค.
23- Monorepo ํ๊ฒฝ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋๋ ** ์ ์ง์ ์ผ๋ก ์ ์ฉ** ํ ์ ์์ต๋๋ค.
25+ > ์ง๊ธ ๊ตฌ์กฐ์ ํน๋ณํ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ๊ตณ์ด ๋ฐ๊ฟ ํ์๋ ์์ต๋๋ค.
26+ > ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ํฉ์ด๋ผ๋ฉด FSD๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค:
27+ > - ํ๋ก์ ํธ๊ฐ ์ปค์ง๋ฉด์ ๊ตฌ์กฐ๊ฐ ์ฝํ๊ณ , ์ ์ง๋ณด์ ์๋๊ฐ ๋๋ ค์ก์ ๋
28+ > - ์๋ก ํฉ๋ฅํ ํ์์ด ํด๋ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ธฐ ํ๋ค์ดํ ๋
2429
25- > ํ์ฌ ๊ตฌ์กฐ๊ฐ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ๋ฐ๋์ ๋ฐ๊ฟ ํ์๋ ์์ต๋๋ค.
26- > ๋ค๋ง ์๋์ ๊ฐ์ ์ํฉ์ด๋ผ๋ฉด ๋์
์ ๊ณ ๋ คํด๋ณด์ธ์:
27- >
28- > - ํ๋ก์ ํธ๊ฐ ์ปค์ง๋ฉด์ ๊ตฌ์กฐ๊ฐ ์ฝํ๊ณ , ๊ธฐ๋ฅ ๊ฐ๋ฐ ์๋๊ฐ ๋๋ ค์ก์ ๋
29- > - ์๋ก์ด ํ์์ด ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ค์ด ์ํฉ์ผ ๋
30+ ๋ค๋ง ๋ชจ๋ ํ๋ก์ ํธ๊ฐ FSD์ ๊ผญ ๋ง๋ ๊ฒ์ ์๋๋๋ค.
31+ ์์๋ก ๊ฐ ํ์ด์ง๊ฐ ๋
๋ฆฝ์ ์ธ ํน์ฑ์ ๊ฐ์ง ํ๋ก์ ํธ์์๋ ์คํ๋ ค ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง ์ ์์ต๋๋ค.
32+ ๋ฐ๋ผ์ ๋์
์ ์๋ ** ํ์ผ๋ฟ ํ๋ก์ ํธ๋ก ๋จผ์ ๊ฒ์ฆํด๋ณด๋ ๊ฒ** ์ ์ ๊ทน ์ถ์ฒํฉ๋๋ค.
3033
31- ๊ตฌ์กฐ ์ ํ์ ๊ฒฐ์ ํ๋ค๋ฉด [ Migration ๊ฐ์ด๋] [ migration ] ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
34+ ๊ตฌ์กฐ๋ฅผ ์ ํํ๊ธฐ๋ก ํ๋ค๋ฉด [ Migration ๊ฐ์ด๋] [ migration ] ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
3235
3336## ๊ตฌ์กฐ ์์ { #basic - example }
3437
3538๊ฐ๋จํ FSD ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
3639
37- - ` ๐ app `
38- - ` ๐ pages `
39- - ` ๐ shared `
40-
41- ์ด ์์ ํด๋๋ค์ ๊ฐ๊ฐ ** Layer** ์ ํด๋นํฉ๋๋ค.
42-
43- - ` ๐ app `
44- - ` ๐ routes `
45- - ` ๐ analytics `
46- - ` ๐ pages `
47- - ` ๐ home `
48- - ` ๐ article-reader `
49- - ` ๐ ui `
50- - ` ๐ api `
51- - ` ๐ settings `
52- - ` ๐ shared `
53- - ` ๐ ui `
54- - ` ๐ api `
55-
56- - ๐ pages ๋ด๋ถ ํด๋๋ค์ ** Slice** ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋๋ฉ์ธ(์ด ์์์์๋ ํ์ด์ง) ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
57- - ` ๐ app ` , ` ๐ shared ` , ` ๐ pages/article-reader ` ๋ด์ ํ์ ํด๋๋ค์ ** Segment** ์
๋๋ค. Segment๋ ํด๋น ์ฝ๋์ ** ๊ธฐ๋ฅ ๋ชฉ์ ** (UI, API ํต์ ๋ฑ)์ ๋ฐ๋ผ ๋ถ๋ฅํฉ๋๋ค.
40+ ``` bash
41+ - ๐ app
42+ - ๐ pages
43+ - ๐ shared
44+ ```
45+
46+ ์ด ์์ ํด๋๋ค์ด ** Layer** ์
๋๋ค.
47+ Layer๋ ํ์คํ๋ ์ด๋ฆ์ ๊ฐ์ง๋ฉฐ, ๊ฐ๊ฐ ๋ช
ํํ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
48+
49+ ``` bash
50+ - ๐ app
51+ - ๐ routes
52+ - ๐ analytics
53+ - ๐ pages
54+ - ๐ home
55+ - ๐ article-reader
56+ - ๐ ui
57+ - ๐ api
58+ - ๐ settings
59+ - ๐ shared
60+ - ๐ ui
61+ - ๐ api
62+ ```
63+
64+ ๐ pages ๋ด๋ถ์ * home* , * article-reader* , * settings* ๋ ** Slice** ์
๋๋ค.
65+ Slice๋ ๋น์ฆ๋์ค ๋๋ฉ์ธ(์ด ์์์์๋ ๊ฐ ํ์ด์ง) ๋จ์๋ก ์ฝ๋๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
66+
67+ ๊ฐ Slice ์์๋ ui, api, model ๋ฑ์ ** Segment** ๊ฐ ์์ต๋๋ค.
68+ Segment๋ ์ฝ๋์ ์ญํ ์ด๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ถ๋ฅ๋ฉ๋๋ค.
69+
70+ - ** ui** - UI Components
71+ - ** api** - REST/GraphQL Client, Fetchers
72+ - ** model** - State, Types, Selectors
73+
74+ ์๋ฅผ ๋ค์ด UI ๊ตฌ์ฑ ์์, ์๋ฒ ์ฐ๋ ๋ฑ์ด ์ด์ ํด๋นํฉ๋๋ค.
75+ ๋์ผํ ๊ตฌ์กฐ๋ app๊ณผ shared Layer์๋ ์ ์ฉํ ์ ์์ต๋๋ค.
5876
5977## ๊ฐ๋
{ #concepts }
6078
@@ -65,7 +83,8 @@ FSD๋ ๋ค์๊ณผ ๊ฐ์ 3๋จ๊ณ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
๋๋ค:
6583
6684 <figcaption style = { { fontStyle: " italic" , fontSize: " 0.9em" }} >
6785 <p >
68- ์ ๋ค์ด์ด๊ทธ๋จ์ FSD์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค. ์ธ ๊ฐ์ ์์ง ๋ธ๋ก ๊ทธ๋ฃน์ ๊ฐ๊ฐ <strong >Layer</strong >, <strong >Slice</strong >, <strong >Segment</strong >๋ฅผ ๋ํ๋
๋๋ค.
86+ ์ ๋ค์ด์ด๊ทธ๋จ์ FSD์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.<br />
87+ ์ธ ๊ฐ์ ์์ง ๋ธ๋ก ๊ทธ๋ฃน์ ๊ฐ๊ฐ <strong >Layer</strong >, <strong >Slice</strong >, <strong >Segment</strong >๋ฅผ ๋ํ๋
๋๋ค.
6988 </p >
7089 <p >
7190 ์ผ์ชฝ์ Layer ๋ธ๋ก์๋ <code >app</code >, <code ><s >processes</s ></code >, <code >pages</code >, <code >widgets</code >,
@@ -76,7 +95,7 @@ FSD๋ ๋ค์๊ณผ ๊ฐ์ 3๋จ๊ณ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
๋๋ค:
7695 ์์๋ก๋ <code >user</code >, <code >post</code >, <code >comment</code > ๋ฑ์ด ์์ต๋๋ค.
7796 </p >
7897 <p >
79- ๊ฐ Slice๋ ๋ค์ ๊ธฐ๋ฅ ๋ชฉ์ ์ ๋ฐ๋ผ ๋๋๋ Segment๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
98+ Slice๋ ๋น์ฆ๋์ค ๋๋ฉ์ธ๋ณ(user, post, comment)๋ก ๋๋๋ฉฐ, ๊ฐ Slice ์์ Segment๋ค์ ์ฝ๋์ ์ญํ (์: UI, ๋ฐ์ดํฐ, ์ํ) ์ ๋ฐ๋ผ ๊ตฌ์ฑ๋ฉ๋๋ค.< br />
8099 ์์๋ก <code >post</code > Slice์๋ <code >ui</code >, <code >model</code >, <code >api</code > Segment๊ฐ ํฌํจ๋ฉ๋๋ค.
81100 </p >
82101 </figcaption >
@@ -86,64 +105,65 @@ FSD๋ ๋ค์๊ณผ ๊ฐ์ 3๋จ๊ณ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฆ
๋๋ค:
86105
87106Layer๋ ๋ชจ๋ FSD ํ๋ก์ ํธ์ ํ์ค ์ต์์ ํด๋์
๋๋ค.
88107
89- 1 . ** App\* ** - Routing, Entrypoint, Globalย Styles, Provider ๋ฑ ์ฑ์ ์คํํ๋ ๋ชจ๋ ์์
90- 2 . ** Processes** (๋ ์ด์ ์ฌ์ฉ๋์ง ์์) - ํ์ด์ง ๊ฐ ๋ณตํฉย ์๋๋ฆฌ์ค
91- 3 . ** Pages** - ์ ์ฒด page ๋๋ ์ค์ฒฉย Routing์ ํต์ฌย ์์ญ
92- 4 . ** Widgets** - ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๋ ๋ํโฏUIยท๊ธฐ๋ฅย ๋ธ๋ก
93- 5 . ** Features** - ์ ํ ์ ๋ฐ์์ ์ฌ์ฌ์ฉ๋๋ ๋น์ฆ๋์คย ๊ธฐ๋ฅ
94- 6 . ** Entities** - user,ย product ๊ฐ์ ํต์ฌย ๋๋ฉ์ธย Entity
95- 7 . ** Shared*** - ํ๋ก์ ํธ ์ ๋ฐ์์ ์ฌ์ฌ์ฉ๋๋ ์ผ๋ฐย ์ ํธ๋ฆฌํฐ
96-
97-
98- _ \* - ** AppยทShared** Layer๋ Slice ์์ด ๊ณง๋ฐ๋ก Segment๋ก ๊ตฌ์ฑ๋ฉ๋๋ค._
99-
100- ์์ Layer์ ๋ชจ๋์ ์์ ๋ณด๋ค ํ์ Layer๋ง ์ฐธ์กฐํ ์ ์์ต๋๋ค.
108+ 1 . ** App** - Routing, Entrypoint, Globalย Styles, Provider ๋ฑ ์ฑ์ ์คํํ๋ ๋ชจ๋ ์์
109+ 2 . ** Processes** - ๋ ์ด์ ์ฌ์ฉ๋์ง ์์
110+ 3 . ** Pages** - Route ๊ธฐ์ค์ผ๋ก ๊ตฌ์ฑ๋ ์ฃผ์ ํ๋ฉด ๋จ์
111+ 4 . ** Widgets** - ํฌ๊ณ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๋ UI ๊ตฌ์ฑ ๋จ์, ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ์๊ฒฐ๋ ํ๋ฉด ๊ธฐ๋ฅ(use case)์ ์ ๊ณตํฉ๋๋ค.
112+ 5 . ** Features** - ์ฌ์ฉ์์๊ฒ ๋น์ฆ๋์ค ๊ฐ์น๋ฅผ ์ ๊ณตํ๋ ์ก์
์ ๊ตฌํํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํ ๊ธฐ๋ฅ ๋จ์
113+ 6 . ** Entities** - ํ๋ก์ ํธ๊ฐ ๋ค๋ฃจ๋ ๋น์ฆ๋์ค Entity
114+ 7 . ** Shared** - ๋ชจ๋ Layer์์ ์ฌ์ฌ์ฉ๋๋ ์ฝ๋(๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ ํธ๋ฆฌํฐ ๋ฑ)
101115
116+ ** App/Shared** Layer๋ Slice ์์ด Segment๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
117+ ์์ Layer๋ ์์ ๋ณด๋ค ํ์ Layer๋ฅผ ์ฐธ์กฐ ํ ์ ์์ง๋ง, ํ์ Layer๊ฐ ์์ Layer๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ ํ์ฉ๋์ง ์์ต๋๋ค.
118+ ์๋ฅผ ๋ค์ด pages๋ features๋ entities์ ๋ชจ๋์ ์ฐธ์กฐํ ์ ์์ง๋ง, features๊ฐ pages๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ ๊ธ์ง๋ฉ๋๋ค.
102119
103120### Sliceย { #slices }
104121
105- Slice๋ Layer ๋ด๋ถ๋ฅผ ๋น์ฆ๋์ค ๋๋ฉ์ธ๋ณ๋ก ๋๋๋๋ค.
106- ์ด๋ฆยท ๊ฐ์์ ์ ํ์ด ์์ผ๋ฉฐ, ๊ฐ์ Layer ๋ด ๋ค๋ฅธ Slice๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
122+ Slice๋ Layer ๋ด๋ถ๋ฅผ ๋น์ฆ๋์ค ๋๋ฉ์ธ๋ณ๋ก ๋๋๋๋ค.
123+ ์ด๋ฆ/ ๊ฐ์์ ์ ํ์ด ์์ผ๋ฉฐ, ๊ฐ์ Layer ๋ด ๋ค๋ฅธ Slice๋ฅผ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
107124์ด ๊ท์น์ด ๋์โฏ์์ง๋์ ๋ฎ์โฏ๊ฒฐํฉ๋๋ฅผ ๋ณด์ฅํฉ๋๋ค.
108125
109126### Segment { #segments }
110127
111- Slice์ AppยทShared Layer๋ Segment๋ก ์ธ๋ถํ๋์ด, ๊ธฐ์ ์ ๋ชฉ์ ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ Segment๋ฅผ ์ฌ์ฉํฉ๋๋ค
128+ Slice์ App/Shared Layer๋ Segment๋ก ์ธ๋ถํ๋์ด, ์ฝ๋์ ์ญํ (์: UI, ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ํ ๊ด๋ฆฌ ๋ฑ)์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๊ทธ๋ฃนํํฉ๋๋ค.
129+ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ Segment๋ฅผ ์ฌ์ฉํฉ๋๋ค
112130
113131- ` ui ` - UIโฏcomponents, dateโฏformatter, styles ๋ฑ UIย ํํ๊ณผ ์ง์ ๊ด๋ จ๋ ์ฝ๋
114132- ` api ` - requestโฏfunctions, dataโฏtypes, mappers ๋ฑ ๋ฐฑ์๋ ํต์ ๋ฐ ๋ฐ์ดํฐ ๋ก์ง
115133- ` model ` - schema, interfaces, store, businessโฏlogic ๋ฑ ์ ํ๋ฆฌ์ผ์ด์
๋๋ฉ์ธ ๋ชจ๋ธ
116134- ` lib ` - ํด๋น Slice์์ ์ฌ๋ฌ ๋ชจ๋์ด ํจ๊ป ์ฌ์ฉํ๋ ๊ณตํต libraryย code
117- - ` config ` - configurationโฏfiles, featureโฏflags ๋ฑ ํ๊ฒฝยท ๊ธฐ๋ฅ ์ค์
135+ - ` config ` - configurationโฏfiles, featureโฏflags ๋ฑ ํ๊ฒฝ/ ๊ธฐ๋ฅ ์ค์
118136
119- ๋๋ถ๋ถ์ Layer์์๋ ์ ๋ค์ฏ Segment๋ก ์ถฉ๋ถํฉ๋๋ค. ํ์ํ๋ค๋ฉด App ๋๋ Shared Layer์์๋ง ์ถ๊ฐโฏSegment๋ฅผ ์ ์ํ์ธ์. (ํ์ ๊ท์น์ ์๋๋๋ค.)
137+ ๋๋ถ๋ถ์ Layer์์๋ ์ ๋ค์ฏ Segment๋ก ์ถฉ๋ถํฉ๋๋ค.
138+ ํ์ํ๋ค๋ฉด App ๋๋ Shared Layer์์๋ง ์ถ๊ฐ Segment๋ฅผ ์ ์ํ์ธ์.
120139
121140## ์ฅ์ { #advantages }
122141
123142FSD ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ ์ป์ ์ ์์ต๋๋ค:
124143
125- - ** ์ผ๊ด์ฑ**
144+ ** ์ผ๊ด์ฑ**
126145 ๊ตฌ์กฐ๊ฐ ํ์คํ๋์ด ํ ๊ฐ ํ์
๊ณผ ์ ๊ท ๋ฉค๋ฒ ์จ๋ณด๋ฉ์ด ์ฌ์์ง๋๋ค.
127146
128- - ** ๊ฒฉ๋ฆฌ์ฑ**
147+ ** ๊ฒฉ๋ฆฌ์ฑ**
129148 Layer์ Slice ๊ฐ ์์กด์ฑ์ ์ ํํ์ฌ, ํน์ ๋ชจ๋๋ง ์์ ํ๊ฒ ์์ ํ ์ ์์ต๋๋ค.
130149
131- - ** ์ฌ์ฌ์ฉ ๋ฒ์ ์ ์ด**
150+ ** ์ฌ์ฌ์ฉ ๋ฒ์ ์ ์ด**
132151 ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ํ์ํ ๋ฒ์์์๋ง ํ์ฉํ ์ ์์ด, ** DRY** ์์น๊ณผ ์ค์ฉ์ฑ์ ๊ท ํ ์๊ฒ ์ ์งํฉ๋๋ค.
133152
134- - ** ๋๋ฉ์ธ ์ค์ฌ ๊ตฌ์กฐ**
153+ ** ๋๋ฉ์ธ ์ค์ฌ ๊ตฌ์กฐ**
135154 ๋น์ฆ๋์ค ์ฉ์ด ๊ธฐ๋ฐ์ ๊ตฌ์กฐ๋ก ๋์ด ์์ด, ์ ์ฒด ์ฝ๋๋ฅผ ๋ชฐ๋ผ๋ ํน์ ๊ธฐ๋ฅ์ ๋
๋ฆฝ์ ์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
136155
137156## ์ ์ง์ ๋์
{ #incremental - adoption }
138157
139158๊ธฐ์กด ํ๋ก์ ํธ์ FSD๋ฅผ ๋์
ํ๋ ๋ฐฉ๋ฒ:
140159
1411601 . ` app ` , ` shared ` Layer๋ฅผ ๋จผ์ ์ ๋ฆฌํ๋ฉฐ ๊ธฐ๋ฐ์ ๋ค์ง๋๋ค.
142- 2 . ๊ธฐ์กด UI๋ฅผ ` widgets ` , ` pages ` Layer๋ก ๋๋ต ๋ถ๋ฐฐํฉ๋๋ค.
143- ์ด ๊ณผ์ ์์ FSD ๊ท์น์ ์๋ฐํด๋ ๊ด์ฐฎ์ต๋๋ค.
144- 3 . Import ์๋ฐ์ ํ๋์ฉ ํด๊ฒฐํ๋ฉด์, ` entities ` , ` features ` ๋ฅผ ์ถ์ถํฉ๋๋ค.
161+ 2 . ๊ธฐ์กด UI๋ฅผ ` widgets ` , ` pages ` Layer๋ก ๋ถ๋ฐฐํฉ๋๋ค. ์ด ๊ณผ์ ์์ FSD ๊ท์น์ ์๋ฐํด๋ ๊ด์ฐฎ์ต๋๋ค.
162+ 3 . Import ์๋ฐ์ ํ๋์ฉ ํด๊ฒฐํ๋ฉด์, ์ฝ๋์์ ๋ก์ง์ ๋ถ๋ฆฌํด ` entities ` ์ ` features ` ๋ก ์ฎ๊น๋๋ค.
145163
146- > ๋ฆฌํฉํ ๋ง ์ค์๋ ์๋ก์ด ๋๊ท๋ชจ Entity ์ถ๊ฐ๋ฅผ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
164+ > ๋์
๋จ๊ณ์์๋ ์๋ก์ด ๋๊ท๋ชจ Entity๋ ๋ณต์กํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
165+ > ๊ตฌ์กฐ๋ฅผ ์์ ์ ์ผ๋ก ์ ๋ฆฌํ๋ ๋ฐ ์ง์คํ๋ ๊ฒ์ด ์ฐ์ ์
๋๋ค.
166+ > ์์ธํ ์ ์ฐจ๋ [ Migration ๊ฐ์ด๋] [ migration ] ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
147167
148168## ๋ค์ ๋จ๊ณ { #next - steps }
149169
0 commit comments