Skip to content

Commit 26d7b3b

Browse files
authored
docs: cleanup and reorganize ko/current/reference for better readability (#886)
1 parent 51c2525 commit 26d7b3b

File tree

3 files changed

+305
-207
lines changed

3 files changed

+305
-207
lines changed

โ€Ži18n/kr/docusaurus-plugin-content-docs/current/reference/layers.mdxโ€Ž

Lines changed: 134 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -3,181 +3,211 @@ sidebar_position: 1
33
pagination_next: reference/slices-segments
44
---
55

6-
import useBaseUrl from '@docusaurus/useBaseUrl';
6+
import useBaseUrl from "@docusaurus/useBaseUrl";
77

88
# Layer
99

10-
Layer๋Š” Feature-Sliced Design์—์„œ **์ฝ”๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ๋ฒ”์œ„**์ž…๋‹ˆ๋‹ค.
11-
์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆŒ ๋•Œ๋Š” ๊ฐ ๋ถ€๋ถ„์ด **์–ด๋–ค ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š”์ง€**์™€ **๋‹ค๋ฅธ ์ฝ”๋“œ์— ์–ผ๋งˆ๋‚˜ ์˜์กดํ•˜๋Š”์ง€**๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
12-
Layer๋งˆ๋‹ค **์–ด๋–ค ์—ญํ• ์„ ๋งก๋Š”์ง€**์— ๋Œ€ํ•œ ๊ณตํ†ต๋œ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
13-
14-
์ด **7๊ฐœ์˜ Layer**๊ฐ€ ์žˆ์œผ๋ฉฐ, **๋‹ด๋‹น ๊ธฐ๋Šฅ๊ณผ ์˜์กด์„ฑ์ด ๋งŽ์€ ๊ฒƒ**๋ถ€ํ„ฐ **์ ์€ ๊ฒƒ** ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
15-
16-
<img src={useBaseUrl("/img/layers/folders-graphic-light.svg#light-mode-only")} width="180" style={{ float: "right", margin: "0 1em" }} alt="A file system tree, with a single root folder called src and then seven subfolders: app, processes, pages, widgets, features, entities, shared. The processes folder is slightly faded out." />
17-
<img src={useBaseUrl("/img/layers/folders-graphic-dark.svg#dark-mode-only")} width="180" style={{ float: "right", margin: "0 1em" }} alt="A file system tree, with a single root folder called src and then seven subfolders: app, processes, pages, widgets, features, entities, shared. The processes folder is slightly faded out." />
18-
19-
1. App
20-
2. Processes (deprecated)
21-
3. Pages
22-
4. Widgets
23-
5. Features
24-
6. Entities
10+
Layer๋Š” Feature-Sliced Design์—์„œ ์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆŒ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” **๊ฐ€์žฅ ํฐ ๊ตฌ๋ถ„ ๋‹จ์œ„**์ž…๋‹ˆ๋‹ค.
11+
์ฝ”๋“œ๋ฅผ ๋‚˜๋ˆŒ ๋•Œ๋Š” ๊ฐ ๋ถ€๋ถ„์ด **์–ด๋–ค ์—ญํ• ์„ ๋งก๋Š”์ง€**, ๊ทธ๋ฆฌ๊ณ  **๋‹ค๋ฅธ ์ฝ”๋“œ์— ์–ผ๋งˆ๋‚˜ ์˜์กดํ•˜๋Š”์ง€**๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
12+
๊ฐ Layer๋Š” **์ด Layer์—๋Š” ์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ์™€์•ผ ํ•˜๋Š”์ง€**์— ๋Œ€ํ•ด **๊ณตํ†ต๋œ ์˜๋ฏธ์™€ ์ฑ…์ž„**์ด ์ •ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
13+
14+
์ด **7๊ฐœ์˜ Layer**๊ฐ€ ์žˆ์œผ๋ฉฐ, ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐˆ์ˆ˜๋ก **๋‹ด๋‹นํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ์˜์กด์„ฑ์ด ์ค„์–ด๋“œ๋Š” ์ˆœ์„œ**์ž…๋‹ˆ๋‹ค.
15+
16+
<img
17+
src={useBaseUrl("/img/layers/folders-graphic-light.svg#light-mode-only")}
18+
width="180"
19+
style={{ float: "right", margin: "0 1em" }}
20+
alt="A file system tree, with a single root folder called src and then seven subfolders: app, processes, pages, widgets, features, entities, shared. The processes folder is slightly faded out."
21+
/>
22+
<img
23+
src={useBaseUrl("/img/layers/folders-graphic-dark.svg#dark-mode-only")}
24+
width="180"
25+
style={{ float: "right", margin: "0 1em" }}
26+
alt="A file system tree, with a single root folder called src and then seven subfolders: app, processes, pages, widgets, features, entities, shared. The processes folder is slightly faded out."
27+
/>
28+
29+
1. App
30+
2. Processes (deprecated)
31+
3. Pages
32+
4. Widgets
33+
5. Features
34+
6. Entities
2535
7. Shared
2636

27-
> ๋ชจ๋“  Layer๋ฅผ ๊ผญ ์จ์•ผ ํ•˜๋Š” ๊ฑด ์•„๋‹™๋‹ˆ๋‹ค. **ํ•„์š”ํ•  ๋•Œ๋งŒ** ์ถ”๊ฐ€ํ•˜์„ธ์š”.
28-
> ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋Š” ์ตœ์†Œํ•œ `shared`, `page`, `app`์€ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
37+
> ๋ชจ๋“  Layer๋ฅผ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
38+
> **ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ** Layer๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
39+
> ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋Š” ๋ณดํ†ต ์ตœ์†Œํ•œ `shared`, `page`, `app` ์ •๋„๋Š” ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
2940
30-
์‹ค๋ฌด์—์„œ๋Š” ํด๋”๋ช…์„ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: `๐Ÿ“ shared`, `๐Ÿ“ page`, `๐Ÿ“ app`).
31-
**์ƒˆ๋กœ์šด Layer๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**(์—ญํ• ์ด ์ด๋ฏธ ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ์Œ).
41+
์‹ค๋ฌด์—์„œ๋Š” ํด๋”๋ช…์„ ๋ณดํ†ต ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: `๐Ÿ“ shared`, `๐Ÿ“ page`, `๐Ÿ“ app`)
42+
๋˜ํ•œ, **์ƒˆ๋กœ์šด Layer๋ฅผ ์ง์ ‘ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.**
43+
(๊ฐ Layer์˜ ์—ญํ• ์ด ์ด๋ฏธ ํ‘œ์ค€์œผ๋กœ ์ถฉ๋ถ„ํžˆ ์ •๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.)
3244

3345
## Import ๊ทœ์น™
3446

35-
Layer๋Š” **Slice(์„œ๋กœ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋œ ๋ชจ๋“ˆ ๋ฌถ์Œ)** ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
36-
Slice ๊ฐ„ ์—ฐ๊ฒฐ์€ **Layer Import ๊ทœ์น™**์œผ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
47+
๊ฐ Layer๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ **Slice(์„œ๋กœ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋œ ๋ชจ๋“ˆ ๋ฌถ์Œ)** ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
48+
Slice๋“ค ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์€ **Layer Import ๊ทœ์น™**์„ ํ†ตํ•ด ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
49+
50+
> **๊ทœ์น™:**
51+
> ํ•˜๋‚˜์˜ Slice ์•ˆ์—์„œ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š”
52+
> **์ž์‹ ์ด ์†ํ•œ Layer๋ณด๋‹ค ์•„๋ž˜ Layer**์— ์žˆ๋Š” *๋‹ค๋ฅธ Slice*๋งŒ importํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3753
38-
> **๊ทœ์น™**: Slice ์•ˆ์˜ ์ฝ”๋“œ๋Š” **์ž์‹ ๋ณด๋‹ค ์•„๋ž˜ Layer**์˜ *๋‹ค๋ฅธ Slice*๋งŒ Importํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
54+
์˜ˆ๋ฅผ ๋“ค์–ด, `๐Ÿ“ ~/features/aaa/api/request.ts` ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
3955

40-
์˜ˆ: `๐Ÿ“ ~/features/aaa/api/request.ts`๋Š”
41-
- ๊ฐ™์€ Layer์˜ `๐Ÿ“ ~/features/bbb` โ†’ **๋ถˆ๊ฐ€๋Šฅ**
42-
- ๋” ์•„๋ž˜ Layer(`๐Ÿ“ ~/entities`, `๐Ÿ“ ~/shared`) โ†’ **๊ฐ€๋Šฅ**
43-
- ๊ฐ™์€ Slice(`๐Ÿ“ ~/features/aaa/lib/cache.ts`) โ†’ **๊ฐ€๋Šฅ**
56+
- ๊ฐ™์€ Layer์˜ `๐Ÿ“ ~/features/bbb` โ†’ **import ๋ถˆ๊ฐ€๋Šฅ**
57+
- ๋” ์•„๋ž˜ Layer(`๐Ÿ“ ~/entities`, `๐Ÿ“ ~/shared`) โ†’ **import ๊ฐ€๋Šฅ**
58+
- ๊ฐ™์€ Slice(`๐Ÿ“ ~/features/aaa/lib/cache.ts`) โ†’ **import ๊ฐ€๋Šฅ**
4459

45-
`app`๊ณผ `shared`๋Š” **์˜ˆ์™ธ**์ž…๋‹ˆ๋‹ค.
46-
๋‘ Layer๋Š” **Layer์ด๋ฉด์„œ ๋™์‹œ์— ํ•˜๋‚˜์˜ ํฐ Slice์ฒ˜๋Ÿผ ๋™์ž‘**ํ•˜๊ณ , ๋‚ด๋ถ€๋Š” **Segment**๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
47-
์ด ๊ฒฝ์šฐ Segment๋ผ๋ฆฌ ์ž์œ ๋กญ๊ฒŒ Importํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
48-
(`shared`๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์ด ์—†๊ณ , `app`์€ ๋ชจ๋“  ๋„๋ฉ”์ธ์„ ๋ฌถ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.)
60+
`app`๊ณผ `shared`๋Š” ์กฐ๊ธˆ ํŠน์ดํ•œ Layer์ž…๋‹ˆ๋‹ค.
61+
๋‘ Layer๋Š” **Layer์ด๋ฉด์„œ ๋™์‹œ์— ํ•˜๋‚˜์˜ ํฐ Slice์ฒ˜๋Ÿผ ๋™์ž‘**ํ•˜๊ณ  ๋‚ด๋ถ€ ๊ตฌ์กฐ๋Š” **Segment**๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
62+
63+
์ด ๊ฒฝ์šฐ์—๋Š” Layer ๋‚ด๋ถ€์—์„œ Segment๋ผ๋ฆฌ๋Š” ์ž์œ ๋กญ๊ฒŒ importํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
64+
(`shared`๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์ด ์—†๊ณ , `app`์€ ๋ชจ๋“  ๋„๋ฉ”์ธ์„ ๋ฌถ๋Š” ์ƒ์œ„ ์กฐ์ •์ž ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.)
4965

5066
## Layer๋ณ„ ์—ญํ• 
5167

52-
๊ฐ Layer๊ฐ€ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š”์ง€ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
68+
์ด์ œ ๊ฐ Layer๊ฐ€ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š”์ง€,
69+
๊ทธ๋ฆฌ๊ณ  ๋ณดํ†ต ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ฝ”๋“œ๊ฐ€ ํ•ด๋‹น Layer์— ๋“ค์–ด์˜ค๋Š”์ง€ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
5370

5471
### Shared
5572

56-
์•ฑ์˜ **๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ**๋ฅผ ๋ชจ์•„๋‘ก๋‹ˆ๋‹ค.
57-
๋ฐฑ์—”๋“œ, ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ์˜ ์—ฐ๊ฒฐ, ๊ทธ๋ฆฌ๊ณ  **๋†’์€ ์‘์ง‘๋„์˜ ๋‚ด๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ**๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
58-
59-
- `app`๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ **Slice ์—†์ด Segment๋กœ๋งŒ ๊ตฌ์„ฑ**ํ•ฉ๋‹ˆ๋‹ค.
60-
- ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์ด ์—†์œผ๋ฏ€๋กœ **Shared ์•ˆ์˜ ํŒŒ์ผ๋ผ๋ฆฌ๋Š” ์ž์œ ๋กญ๊ฒŒ Import**ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
61-
62-
Segment ์˜ˆ์‹œ
63-
- `๐Ÿ“ api` โ€” API ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐฑ์—”๋“œ ์š”์ฒญ ํ•จ์ˆ˜
64-
- `๐Ÿ“ ui` โ€” ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ
65-
- **๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ œ์™ธ**, **๋ธŒ๋žœ๋“œ ํ…Œ๋งˆ ์ ์šฉ ๊ฐ€๋Šฅ**
66-
- ๋กœ๊ณ , ๋ ˆ์ด์•„์›ƒ, ์ž๋™์™„์„ฑ/๊ฒ€์ƒ‰์ฐฝ ๋“ฑ UI ๋กœ์ง ํฌํ•จ ๊ฐ€๋Šฅ
67-
- ์ž๋™์™„์„ฑ/๊ฒ€์ƒ‰์ฐฝ ๋“ฑ **UI ๋กœ์ง ์ปดํฌ๋„ŒํŠธ**๋„ ๊ฐ€๋Šฅ
68-
- `๐Ÿ“ lib` โ€” ๋‚ด๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
69-
- ๋‹จ์ˆœ `utils/helpers` ๋ชจ์Œ์ด ์•„๋‹˜ ([์ด ๊ธ€ ์ฐธ๊ณ ][ext-sova-utility-dump])
70-
- ํ•˜๋‚˜์˜ ์ฃผ์ œ(๋‚ ์งœ, ์ƒ‰์ƒ, ํ…์ŠคํŠธ ๋“ฑ)์— ์ง‘์ค‘
71-
- README๋กœ ์—ญํ• ๊ณผ ๋ฒ”์œ„๋ฅผ ๋ฌธ์„œํ™”
73+
Shared Layer๋Š” ์•ฑ์˜ **๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์™€ ๊ธฐ๋ฐ˜ ๋„๊ตฌ๋“ค์„ ๋ชจ์•„๋‘๋Š” ๊ณณ**์ž…๋‹ˆ๋‹ค.
74+
๋ฐฑ์—”๋“œ, ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ์˜ ์—ฐ๊ฒฐ,
75+
๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋Š” **์‘์ง‘๋„ ๋†’์€ ๋‚ด๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ**๊ฐ€ ์—ฌ๊ธฐ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
76+
77+
`app`๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ **Slice ์—†์ด Segment๋กœ๋งŒ ๊ตฌ์„ฑ**ํ•ฉ๋‹ˆ๋‹ค.
78+
๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, **Shared ๋‚ด๋ถ€์˜ ํŒŒ์ผ๋“ค์€ ์„œ๋กœ ์ž์œ ๋กญ๊ฒŒ import**ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
79+
80+
Segment ์˜ˆ์‹œ:
81+
82+
- `๐Ÿ“ api` โ€” API ํด๋ผ์ด์–ธํŠธ์™€ ๊ณตํ†ต ๋ฐฑ์—”๋“œ ์š”์ฒญ ํ•จ์ˆ˜
83+
- `๐Ÿ“ ui` โ€” ๊ณตํ†ต UI ์ปดํฌ๋„ŒํŠธ
84+
- **๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ํฌํ•จํ•˜์ง€ ์•Š์ง€๋งŒ**, **๋ธŒ๋žœ๋“œ ํ…Œ๋งˆ๋Š” ์ ์šฉ ๊ฐ€๋Šฅ**
85+
- ๋กœ๊ณ , ๋ ˆ์ด์•„์›ƒ, ์ž๋™์™„์„ฑ/๊ฒ€์ƒ‰์ฐฝ ๋“ฑ **UI ์ž์ฒด ๋กœ์ง**์„ ํฌํ•จํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” ํ—ˆ์šฉ
86+
- `๐Ÿ“ lib` โ€” ๋‚ด๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
87+
- ๋‹จ์ˆœํžˆ `utils/helpers`๋ฅผ ๋ชจ์•„๋‘๋Š” ํด๋”๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ([์ด ๊ธ€ ์ฐธ๊ณ ][ext-sova-utility-dump])
88+
- ๋‚ ์งœ, ์ƒ‰์ƒ, ํ…์ŠคํŠธ ๋“ฑ **ํ•˜๋‚˜์˜ ์ฃผ์ œ์— ์ง‘์ค‘**ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
89+
- README๋ฅผ ํ†ตํ•ด ์—ญํ• ๊ณผ ๋ฒ”์œ„๋ฅผ ๋ฌธ์„œํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
7290
- `๐Ÿ“ config` โ€” ํ™˜๊ฒฝ๋ณ€์ˆ˜, ์ „์—ญ Feature Flag
7391
- `๐Ÿ“ routes` โ€” ๋ผ์šฐํŠธ ์ƒ์ˆ˜/ํŒจํ„ด
7492
- `๐Ÿ“ i18n` โ€” ๋ฒˆ์—ญ ์„ค์ •, ์ „์—ญ ๋ฌธ์ž์—ด
7593

76-
> Segment ์ด๋ฆ„์€ **๋ฌด์—‡์„ ํ•˜๋Š” ํด๋”์ธ์ง€** ๋“œ๋Ÿฌ๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.
77-
> `components`, `hooks`, `types`์ฒ˜๋Ÿผ ์—ญํ• ์ด ๋ถˆ๋ช…ํ™•ํ•œ ์ด๋ฆ„์€ ํ”ผํ•˜์„ธ์š”.
94+
> Segment ์ด๋ฆ„์€ **์ด ํด๋”๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€**๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
95+
> `components`, `hooks`, `types`์ฒ˜๋Ÿผ ์—ญํ• ์ด ๋ชจํ˜ธํ•œ ์ด๋ฆ„์€ ๊ฐ€๊ธ‰์  ํ”ผํ•˜์„ธ์š”.
7896
7997
### Entities
8098

81-
ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค๋ฃจ๋Š” **ํ•ต์‹ฌ ๋ฐ์ดํ„ฐ ๊ฐœ๋…**์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
82-
๋น„์ฆˆ๋‹ˆ์Šค ์šฉ์–ด(์˜ˆ: `User`, `Post`, `Product`)์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
99+
Entities Layer๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค๋ฃจ๋Š” **ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐœ๋…**์„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
100+
๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, ์‹ค์ œ ๋„๋ฉ”์ธ ์šฉ์–ด(์˜ˆ: `User`, `Post`, `Product`)์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
83101

84-
Entity Slice์—๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
102+
๊ฐ Entity Slice์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
85103

86-
๊ตฌ์„ฑ
87-
- `๐Ÿ“ model` โ€” ๋ฐ์ดํ„ฐ ์ƒํƒœ์™€ ๊ฒ€์ฆ ์Šคํ‚ค๋งˆ
88-
- `๐Ÿ“ api` โ€” ํ•ด๋‹น Entity์˜ API ์š”์ฒญ
89-
- `๐Ÿ“ ui` โ€” Entity์˜ ์‹œ๊ฐ์  ํ‘œํ˜„
90-
- ์™„์ „ํ•œ UI ๋ธ”๋ก์ด ์•„๋‹ˆ์–ด๋„ ๋จ
91-
- ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค๊ณ„
92-
- ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ props/slot์œผ๋กœ ์—ฐ๊ฒฐ ๊ถŒ์žฅ
104+
๊ตฌ์„ฑ:
93105

106+
- `๐Ÿ“ model` โ€” ๋ฐ์ดํ„ฐ ์ƒํƒœ, ๋„๋ฉ”์ธ ๋กœ์ง, ๊ฒ€์ฆ ์Šคํ‚ค๋งˆ
107+
- `๐Ÿ“ api` โ€” ํ•ด๋‹น Entity์™€ ๊ด€๋ จ๋œ API ์š”์ฒญ
108+
- `๐Ÿ“ ui` โ€” Entity์˜ ์‹œ๊ฐ์  ํ‘œํ˜„
109+
- ์™„์„ฑ๋œ ํฐ UI ๋ธ”๋ก์ด ์•„๋‹ˆ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค.
110+
- ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.
111+
- ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ๊ฐ€๋Šฅํ•˜๋ฉด props/slot์œผ๋กœ ์™ธ๋ถ€์—์„œ ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
94112

95113
#### Entity ๊ฐ„ ๊ด€๊ณ„
96114

97-
์›์น™์ ์œผ๋กœ Slice๋ผ๋ฆฌ๋Š” ์„œ๋กœ ๋ชจ๋ฅด๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.
98-
ํ•˜์ง€๋งŒ ํ˜„์‹ค์ ์œผ๋กœ **๋‹ค๋ฅธ Entity๋ฅผ ํฌํ•จ**ํ•˜๊ฑฐ๋‚˜ **์ƒํ˜ธ์ž‘์šฉ**ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
99-
์ด๋•Œ๋Š” ๋กœ์ง์„ **์ƒ์œ„ Layer(Feature/Page)** ๋กœ ์˜ฌ๋ ค ์ฒ˜๋ฆฌํ•˜์„ธ์š”.
115+
์›์น™์ ์œผ๋กœ๋Š” Entity Slice๋ผ๋ฆฌ๋Š” ์„œ๋กœ **์„œ๋กœ๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํƒœ**๊ฐ€ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.
116+
ํ•˜์ง€๋งŒ ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ํ•œ Entity๊ฐ€ ๋‹ค๋ฅธ Entity๋ฅผ **ํฌํ•จํ•˜๊ฑฐ๋‚˜**
117+
์—ฌ๋Ÿฌ Entity๊ฐ€ ์„œ๋กœ **์ƒํ˜ธ์ž‘์šฉ**ํ•˜๋Š” ์ผ์ด ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
118+
119+
์ด๋Ÿฐ ๊ฒฝ์šฐ, ๋‘ Entity ๊ฐ„์˜ ๊ตฌ์ฒด์ ์ธ ์ƒํ˜ธ์ž‘์šฉ ๋กœ์ง์€
120+
**์ƒ์œ„ Layer(Feature ๋˜๋Š” Page)** ๋กœ ์˜ฌ๋ ค์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
100121

101-
๋งŒ์•ฝ ํ•œ Entity ๋ฐ์ดํ„ฐ์— ๋‹ค๋ฅธ Entity๊ฐ€ ํฌํ•จ๋œ๋‹ค๋ฉด,
102-
`@x` ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด **๊ต์ฐจ Public API**๋กœ ์—ฐ๊ฒฐ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋“œ๋Ÿฌ๋‚ด์„ธ์š”.
122+
๋งŒ์•ฝ ํ•œ Entity์˜ ๋ฐ์ดํ„ฐ ์•ˆ์— ๋‹ค๋ฅธ Entity๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด,
123+
`@x` ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด **๊ต์ฐจ Public API**๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ๋˜์—ˆ์Œ์„ ๋ช…์‹œํ•ด ์ฃผ์„ธ์š”.
103124

104125
```ts title="entities/artist/model/artist.ts"
105126
import type { Song } from "entities/song/@x/artist";
106127

107128
export interface Artist {
108-
name: string;
109-
songs: Array<Song>;
129+
name: string;
130+
songs: Array<Song>;
110131
}
111132
```
112133

113-
์ž์„ธํ•œ ๋‚ด์šฉ์€ [Cross-Import๋ฅผ ์œ„ํ•œ Public API][public-api-for-cross-imports]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
134+
์ž์„ธํ•œ ๋‚ด์šฉ์€ [Cross-Import๋ฅผ ์œ„ํ•œ Public API][public-api-for-cross-imports] ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
114135

115136
### Feature
116137

117-
์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ์„ ๋‹ด์Šต๋‹ˆ๋‹ค.
118-
๋ณดํ†ต ํŠน์ • Entity์™€ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
138+
Features Layer์—๋Š” **์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ**์ด ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.
139+
๋ณดํ†ต ํ•˜๋‚˜ ์ด์ƒ์˜ Entity์™€ ์—ฐ๊ด€๋˜์–ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
140+
141+
- ๋ชจ๋“  ๋™์ž‘์„ ๋ฌด์กฐ๊ฑด Feature๋กœ ๋งŒ๋“ค ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
142+
- **์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ**์ผ ๋•Œ Feature๋กœ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์„ธ์š”.
143+
- ์˜ˆ: ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ์—๋””ํ„ฐ์—์„œ ๋™์ผํ•œ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, `comments`๋ฅผ Feature๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
144+
- Feature๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋ฉด, ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ด ์–ด๋”” ์žˆ๋Š”์ง€ ์ฐพ๊ธฐ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
119145

120-
- ๋ชจ๋“  ๊ธฐ๋Šฅ์„ Feature๋กœ ๋งŒ๋“ค ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ณ ๋ คํ•˜์„ธ์š”.
121-
- ์˜ˆ: ์—ฌ๋Ÿฌ ์—๋””ํ„ฐ์—์„œ ๊ฐ™์€ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ์„ ์“ด๋‹ค๋ฉด, comments๋ฅผ Feature๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
122-
- Feature๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ฐพ๊ธฐ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
146+
๊ตฌ์„ฑ:
123147

124-
๊ตฌ์„ฑ
125-
- ๐Ÿ“ ui โ€” ์ƒํ˜ธ์ž‘์šฉ UI(์˜ˆ: ํผ)
126-
- ๐Ÿ“ api โ€” ๊ธฐ๋Šฅ ๊ด€๋ จ API ์š”์ฒญ
127-
- ๐Ÿ“ model โ€” ๊ฒ€์ฆ, ๋‚ด๋ถ€ ์ƒํƒœ
128-
- ๐Ÿ“ config โ€” Feature Flag
148+
- `๐Ÿ“ ui` โ€” ์ƒํ˜ธ์ž‘์šฉ UI (์˜ˆ: ํผ, ๊ฒ€์ƒ‰ ๋ฐ” ๋“ฑ)
149+
- `๐Ÿ“ api` โ€” ํ•ด๋‹น ๊ธฐ๋Šฅ๊ณผ ์ง์ ‘ ๊ด€๋ จ๋œ API ์š”์ฒญ
150+
- `๐Ÿ“ model` โ€” ๊ฒ€์ฆ ๋กœ์ง, ๋‚ด๋ถ€ ์ƒํƒœ ๊ด€๋ฆฌ
151+
- `๐Ÿ“ config` โ€” Feature Flag ๋“ฑ ๊ธฐ๋Šฅ๋ณ„ ์„ค์ •
129152

130-
> ์ƒˆ๋กœ์šด ํŒ€์›์ด ๋“ค์–ด์™”์„ ๋•Œ Page์™€ Feature๋งŒ ๋ด๋„ ์•ฑ ๊ธฐ๋Šฅ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•˜์„ธ์š”.
153+
> ์ƒˆ๋กœ์šด ํŒ€์›์ด ํ”„๋กœ์ ํŠธ์— ํ•ฉ๋ฅ˜ํ–ˆ์„ ๋•Œ,
154+
> Page์™€ Feature๋งŒ ํ›‘์–ด๋ด๋„ **์ด ์•ฑ์ด ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”์ง€**๋ฅผ ๋Œ€๋žต ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.
131155
132156
### Widget
133157

134-
๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํฐ UI ๋ธ”๋ก์ž…๋‹ˆ๋‹ค.
135-
์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ์žฌ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜, ํ•œ ํŽ˜์ด์ง€์— ํฐ ๋ธ”๋ก์ด ์—ฌ๋Ÿฟ ์žˆ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
158+
Widgets Layer๋Š” **๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋น„๊ต์  ํฐ UI ๋ธ”๋ก**์„ ๋‘๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.
159+
์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ์žฌ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜, ํ•œ ํŽ˜์ด์ง€์—์„œ **ํฐ ์„น์…˜ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” UI ๋ธ”๋ก**์ด ์žˆ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
136160

137161
:::tip
138162

139-
- ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ํŠน์ • ํŽ˜์ด์ง€์˜ ํ•ต์‹ฌ ์ฝ˜ํ…์ธ ๋ผ๋ฉด Widget์œผ๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ๋ง๊ณ  Page ์•ˆ์— ๋‘์„ธ์š”.
140-
- Nested Routing(์˜ˆ: [Remix][ext-remix]) ํ™˜๊ฒฝ์—์„œ๋Š” Widget์ด **Page์™€ ์œ ์‚ฌํ•œ ๋ฐฉ์‹**์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
141-
์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ, ๋กœ๋”ฉ ์ƒํƒœ ํ‘œ์‹œ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋“ฑ์„ ํฌํ•จํ•ด **ํ•˜๋‚˜์˜ ๋ผ์šฐํ„ฐ ๋‹จ์œ„ ๋ธ”๋ก**์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
163+
์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ํŠน์ • ํŽ˜์ด์ง€์˜ ํ•ต์‹ฌ ์ฝ˜ํ…์ธ ์—๋งŒ ์“ฐ์ธ๋‹ค๋ฉด, ๊ตณ์ด Widget์œผ๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ๋ง๊ณ  Page ๋‚ด๋ถ€์— ๋‘๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
164+
Nested Routing(์˜ˆ: [Remix][ext-remix]) ํ™˜๊ฒฝ์—์„œ๋Š” Widget์ด **Page์™€ ๋น„์Šทํ•œ ์—ญํ• **์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
165+
์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ, ๋กœ๋”ฉ ์ƒํƒœ ํ‘œ์‹œ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋“ฑ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” **ํ•˜๋‚˜์˜ ๋ผ์šฐํ„ฐ ๋‹จ์œ„ UI ๋ธ”๋ก**์œผ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
142166

143167
:::
144168

145169
### Page
146170

147-
์›น/์•ฑ์˜ **ํ™”๋ฉด(screen) ๋˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ(activity)** ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
148-
๋Œ€๋ถ€๋ถ„ ํŽ˜์ด์ง€ 1๊ฐœ = Slice 1๊ฐœ์ด์ง€๋งŒ, ์œ ์‚ฌํ•œ ํŽ˜์ด์ง€๋Š” ํ•˜๋‚˜์˜ Slice๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
171+
Pages Layer๋Š” ์›น/์•ฑ์—์„œ ๋ณด์ด๋Š” **ํ™”๋ฉด(screen) ๋˜๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ(activity)** ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
172+
์ผ๋ฐ˜์ ์œผ๋กœ โ€œํŽ˜์ด์ง€ 1๊ฐœ = Slice 1๊ฐœโ€ ๊ตฌ์กฐ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋งŒ,
173+
๊ตฌ์กฐ๊ฐ€ ์œ ์‚ฌํ•œ ํŽ˜์ด์ง€๋“ค์€ ํ•˜๋‚˜์˜ Slice๋กœ ๋ฌถ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
149174

150-
- ์ฝ”๋“œ ์ฐพ๊ธฐ๋งŒ ์‰ฝ๋‹ค๋ฉด Page Slice ํฌ๊ธฐ ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค.
151-
- ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” UI๋Š” Page ์•ˆ์— ๋‘ก๋‹ˆ๋‹ค.
152-
- ๋ณดํ†ต ์ „์šฉ ๋ชจ๋ธ์€ ์—†๊ณ , ๊ฐ„๋‹จํ•œ ์ƒํƒœ๋งŒ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
175+
์ฝ”๋“œ๋ฅผ ์ฐพ๊ธฐ๋งŒ ์‰ฝ๋‹ค๋ฉด, Page Slice์˜ ํฌ๊ธฐ์— ํŠน๋ณ„ํ•œ ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค.
176+
์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” UI๋Š” ๊ทธ๋Œ€๋กœ Page ๋‚ด๋ถ€์— ๋‘๋ฉด ๋ฉ๋‹ˆ๋‹ค.
177+
Page Layer์—๋Š” ๋ณดํ†ต ์ „์šฉ model์ด ์—†์œผ๋ฉฐ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฐ„๋‹จํ•œ ์ƒํƒœ๋งŒ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
153178

154-
๊ตฌ์„ฑ ์˜ˆ
155-
- ๐Ÿ“ ui โ€” UI, ๋กœ๋”ฉ ์ƒํƒœ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ
156-
- ๐Ÿ“ api โ€” ๋ฐ์ดํ„ฐ ํŒจ์นญ/๋ณ€๊ฒฝ ์š”์ฒญ
179+
๊ตฌ์„ฑ ์˜ˆ:
180+
181+
- `๐Ÿ“ ui` โ€” ํŽ˜์ด์ง€ UI, ๋กœ๋”ฉ ์ƒํƒœ, ์—๋Ÿฌ ์ƒํƒœ ์ฒ˜๋ฆฌ
182+
- `๐Ÿ“ api` โ€” ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ํŒจ์นญ/๋ณ€๊ฒฝ ์š”์ฒญ
157183

158184
### Process
159185

160186
:::caution
161187

162-
Deprecated โ€” ๊ธฐ์กด ์ฝ”๋“œ๋Š” feature๋‚˜ app์œผ๋กœ ์˜ฎ๊ธฐ์„ธ์š”.
188+
**Deprecated** โ€” ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ์ฝ”๋“œ๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด Feature๋‚˜ App Layer๋กœ ์ด๋™ํ•˜์„ธ์š”.
163189

164190
:::
165191

166-
๊ณผ๊ฑฐ์—๋Š” ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๋„˜๋‚˜๋“œ๋Š” ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ํƒˆ์ถœ๊ตฌ ์—ญํ• ์ด์—ˆ์ง€๋งŒ,
167-
์ •์˜๊ฐ€ ๋ชจํ˜ธํ•ด ๋Œ€๋ถ€๋ถ„์˜ ์•ฑ์—์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
168-
๋ผ์šฐํ„ฐ, ์„œ๋ฒ„ ๋ ˆ๋ฒจ ๋กœ์ง์€ App Layer์— ๋‘๊ณ , App์ด ๋„ˆ๋ฌด ์ปค์งˆ ๋•Œ๋งŒ ์ œํ•œ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์„ธ์š”.
192+
๊ณผ๊ฑฐ์—๋Š” ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๋„˜๋‚˜๋“œ๋Š” ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ **ํƒˆ์ถœ๊ตฌ ๊ฐ™์€ Layer**๋กœ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
193+
ํ•˜์ง€๋งŒ ์—ญํ• ์ด ๋ชจํ˜ธํ•˜๊ณ , ๋Œ€๋ถ€๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ตณ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ์ถฉ๋ถ„ํžˆ ์„ค๊ณ„๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
194+
195+
๋ผ์šฐํ„ฐ, ์„œ๋ฒ„ ์—ฐ๋™ ๊ฐ™์€ ์ „์—ญ์ ์ธ ๋กœ์ง์€ ๋ณดํ†ต App Layer์— ๋‘ก๋‹ˆ๋‹ค.
196+
App Layer๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์งˆ ๋•Œ ์ •๋ง ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ œํ•œ์ ์œผ๋กœ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
169197

170198
### App
171199

172-
์•ฑ ์ „์—ญ์—์„œ ๋™์ž‘ํ•˜๋Š” **ํ™˜๊ฒฝ ์„ค์ •**๊ณผ **๊ณต์šฉ ๋กœ์ง**์„ ๊ด€๋ฆฌํ•˜๋Š” Layer์ž…๋‹ˆ๋‹ค.
173-
์˜ˆ๋ฅผ ๋“ค์–ด, ๋ผ์šฐํ„ฐ ์„ค์ •, ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ, ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ, ์ง„์ž…์  ์„ค์ • ๋“ฑ **์•ฑ ์ „์ฒด์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ฝ”๋“œ**๋ฅผ ๋‘ก๋‹ˆ๋‹ค.
200+
App Layer๋Š” ์•ฑ ์ „์—ญ์—์„œ ๋™์ž‘ํ•˜๋Š” **ํ™˜๊ฒฝ ์„ค์ •**๊ณผ **๊ณต์šฉ ๋กœ์ง**์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.
201+
์˜ˆ๋ฅผ ๋“ค์–ด ๋ผ์šฐํ„ฐ ์„ค์ •, ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ(Store ์„ค์ •), ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ ์•ฑ ์ง„์ž…์ (Entry Point) ์„ค์ • ๋“ฑ๊ณผ ๊ฐ™์ด
202+
**์•ฑ ์ „์ฒด์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ฝ”๋“œ**๊ฐ€ ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
203+
`shared`์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Slice ์—†์ด **Segment๋งŒ์œผ๋กœ ๊ตฌ์„ฑ**ํ•ฉ๋‹ˆ๋‹ค.
204+
205+
๋Œ€ํ‘œ์ ์ธ Segment ์˜ˆ:
174206

175-
- shared์ฒ˜๋Ÿผ Slice ์—†์ด Segment๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
176-
- ๋Œ€ํ‘œ Segment:
177-
- `๐Ÿ“ routes` โ€” Router ์„ค์ •
178-
- `๐Ÿ“ store` โ€” Global State Store ์„ค์ •
179-
- `๐Ÿ“ styles` โ€” Global Style
180-
- `๐Ÿ“ entrypoint` โ€” Application Entry Point์™€ Framework ์„ค์ •
207+
- `๐Ÿ“ routes` โ€” Router ์„ค์ •
208+
- `๐Ÿ“ store` โ€” Global State Store ์„ค์ •
209+
- `๐Ÿ“ styles` โ€” Global Style
210+
- `๐Ÿ“ entrypoint` โ€” Application Entry Point์™€ Framework ์„ค์ •
181211

182212
[public-api-for-cross-imports]: /docs/reference/public-api#public-api-for-cross-imports
183213
[ext-remix]: https://remix.run

0 commit comments

Comments
ย (0)