Skip to content

Commit bab8466

Browse files
authored
docs: Add Korean translation for Usage with NuxtJS document (#800)
1 parent 40b116e commit bab8466

File tree

1 file changed

+196
-0
lines changed

1 file changed

+196
-0
lines changed
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
---
2+
sidebar_position: 10
3+
---
4+
# NuxtJS์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ
5+
6+
NuxtJS ํ”„๋กœ์ ํŠธ์—์„œ FSD๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, NuxtJS์˜ ๊ธฐ๋ณธ์ ์ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ FSD ์•„ํ‚คํ…์ฒ˜ ์›์น™ ๊ฐ„์˜ ์ฐจ์ด๋กœ ์ธํ•ด ์ผ๋ถ€ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
7+
8+
- NuxtJS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ `src` ๋””๋ ‰ํ„ฐ๋ฆฌ ์—†์ด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
9+
- ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…(File-based Routing) ๋ฐฉ์‹์œผ๋กœ `pages` ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด Vue ํŒŒ์ผ์„ ์ž๋™ ๋งคํ•‘ํ•˜์ง€๋งŒ, FSD์—์„œ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ slice ๊ด€์ ์—์„œ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
10+
11+
12+
## `src` ํด๋”์— ๋Œ€ํ•œ ๋ณ„์นญ(alias) ์ถ”๊ฐ€ํ•˜๊ธฐ
13+
14+
์„ค์ • ํŒŒ์ผ์˜ `alias` ๊ฐ์ฒด์— src ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค.
15+
16+
```ts title="nuxt.config.ts"
17+
export default defineNuxtConfig({
18+
devtools: { enabled: true }, // ๊ฐœ๋ฐœ ๋„๊ตฌ ํ™œ์„ฑํ™” (FSD์™€๋Š” ๋ฌด๊ด€)
19+
alias: {
20+
"@": '../src'
21+
},
22+
})
23+
```
24+
## ๋ผ์šฐํ„ฐ ์„ค์ • ๋ฐฉ๋ฒ• ์„ ํƒํ•˜๊ธฐ
25+
26+
NuxtJS์—์„œ๋Š” ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค: `ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…`๊ณผ `์„ค์ • ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…`์ž…๋‹ˆ๋‹ค.
27+
28+
- ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…: `app/routes` ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์— `index.vue` ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ผ์šฐํŠธ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
29+
- ์„ค์ • ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…: `router.options.ts` ํŒŒ์ผ์—์„œ ์ง์ ‘ ๋ผ์šฐํŠธ ๊ตฌ์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
30+
31+
### ์„ค์ • ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…
32+
33+
NuxtJS์—์„œ ์„ค์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ผ์šฐํŒ…์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด, `app` ๋ ˆ์ด์–ด์— `router.options.ts` ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ผ์šฐํŠธ ์„ค์ • ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
34+
35+
```ts title="app/router.options.ts"
36+
import type { RouterConfig } from '@nuxt/schema';
37+
38+
export default <RouterConfig> {
39+
routes: (_routes) => [],
40+
};
41+
42+
```
43+
ํ”„๋กœ์ ํŠธ์— Home page๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:
44+
45+
1. `pages` layer ๋‚ด์— page slice๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
46+
2. `app/router.options.ts` ํŒŒ์ผ์— ํ•ด๋‹น ๋ผ์šฐํŠธ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
47+
48+
page slice๋Š” [CLI](https://github.com/feature-sliced/cli)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
49+
50+
```shell
51+
fsd pages home
52+
```
53+
54+
์ด์ œ `ui` segment ๋‚ด์— `home-page.vue` ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , Public API๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค:
55+
56+
```ts title="src/pages/home/index.ts"
57+
export { default as HomePage } from './ui/home-page';
58+
```
59+
60+
์œ„ ๊ณผ์ •์„ ๋”ฐ๋ฅด๋ฉด ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:
61+
```sh
62+
|โ”€โ”€ src
63+
โ”‚ โ”œโ”€โ”€ app
64+
โ”‚ โ”‚ โ”œโ”€โ”€ router.options.ts
65+
โ”‚ โ”œโ”€โ”€ pages
66+
โ”‚ โ”‚ โ”œโ”€โ”€ home
67+
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ui
68+
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ home-page.vue
69+
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ index.ts
70+
```
71+
72+
๋งˆ์ง€๋ง‰์œผ๋กœ `router.options.ts` ํŒŒ์ผ์— ์ƒˆ๋กœ์šด page์— ๋Œ€ํ•œ ๋ผ์šฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:
73+
74+
```ts title="app/router.options.ts"
75+
import type { RouterConfig } from '@nuxt/schema'
76+
77+
export default <RouterConfig> {
78+
routes: (_routes) => [
79+
{
80+
name: 'home',
81+
path: '/',
82+
component: () => import('@/pages/home.vue').then(r => r.default || r)
83+
}
84+
],
85+
}
86+
```
87+
88+
### ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…
89+
90+
#### `src` ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ • ๋ฐ ๋ผ์šฐํ„ฐ ๊ตฌ์„ฑ
91+
92+
๋จผ์ € ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— `src` ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ์•ˆ์— `app`๊ณผ `pages` ๋ ˆ์ด์–ด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
93+
์ดํ›„ `app` ๋ ˆ์ด์–ด ๋‚ด์— `routes` ํด๋”๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ NuxtJS์˜ ๋ผ์šฐํŒ…์„ ์ด๊ณณ์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
94+
95+
์ตœ์ข…์ ์œผ๋กœ ํŒŒ์ผ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค:
96+
97+
```sh
98+
โ”œโ”€โ”€ src
99+
โ”‚ โ”œโ”€โ”€ app
100+
โ”‚ โ”‚ โ”œโ”€โ”€ routes
101+
โ”‚ โ”œโ”€โ”€ pages # FSD ๊ตฌ์กฐ์— ๋งž๋Š” Pages ๋ ˆ์ด์–ด
102+
```
103+
104+
#### nuxt.config.ts์—์„œ ๋ผ์šฐํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณ€๊ฒฝ
105+
106+
NuxtJS๊ฐ€ `pages` ํด๋” ๋Œ€์‹  `app/routes` ํด๋”๋ฅผ ๋ผ์šฐํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•˜๋ ค๋ฉด, `nuxt.config.ts` ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
107+
108+
```ts title="nuxt.config.ts"
109+
export default defineNuxtConfig({
110+
devtools: { enabled: true }, // ๊ฐœ๋ฐœ ๋„๊ตฌ ํ™œ์„ฑํ™” (FSD์™€ ๋ฌด๊ด€)
111+
alias: {
112+
"@": '../src'
113+
},
114+
dir: {
115+
pages: './src/app/routes'
116+
}
117+
})
118+
```
119+
120+
์ด์ œ `app/routes` ๋‚ด์—์„œ ๋ผ์šฐํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , `pages`์— ์žˆ๋Š” page๋“ค๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
121+
122+
ํ”„๋กœ์ ํŠธ์— `Home` page๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:
123+
- `pages` layer ๋‚ด์— page slice๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
124+
- `app/routes` ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์—์„œ ํ•ด๋‹น page์— ๋Œ€ํ•œ ๋ผ์šฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
125+
- page slice์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ผ์šฐํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
126+
127+
128+
#### 1๏ธโƒฃ page slice ์ƒ์„ฑ
129+
130+
page slice๋Š” [CLI](https://github.com/feature-sliced/cli)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
131+
132+
```shell
133+
fsd pages home
134+
```
135+
136+
์ด์ œ `ui` segment ๋‚ด์— `home-page.vue` ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ , Public API๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค:
137+
138+
```ts title="src/pages/home/index.ts"
139+
export { default as HomePage } from './ui/home-page';
140+
```
141+
142+
#### 2๏ธโƒฃ `app/routes` ๋‚ด์— ๋ผ์šฐํŠธ ์ถ”๊ฐ€
143+
144+
์ƒ์„ฑํ•œ page๋ฅผ ๋ผ์šฐํŠธ์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด, `app/routes/index.vue` ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  `HomePage` ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
145+
146+
```sh
147+
148+
โ”œโ”€โ”€ src
149+
โ”‚ โ”œโ”€โ”€ app
150+
โ”‚ โ”‚ โ”œโ”€โ”€ routes
151+
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ index.vue
152+
โ”‚ โ”œโ”€โ”€ pages
153+
โ”‚ โ”‚ โ”œโ”€โ”€ home
154+
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ ui
155+
โ”‚ โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ home-page.vue
156+
โ”‚ โ”‚ โ”‚ โ”œโ”€โ”€ index.ts
157+
```
158+
159+
#### 3๏ธโƒฃ `index.vue`์—์„œ page ์ปดํฌ๋„ŒํŠธ ๋“ฑ๋ก
160+
161+
```html title="src/app/routes/index.vue"
162+
<script setup>
163+
import { HomePage } from '@/pages/home';
164+
</script>
165+
166+
<template>
167+
<HomePage/>
168+
</template>
169+
```
170+
171+
์ด์ œ `HomePage`๊ฐ€ NuxtJS์˜ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ •์ƒ์ ์œผ๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.
172+
173+
## `layouts`๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊นŒ์š”?
174+
175+
๋ ˆ์ด์•„์›ƒ์€ `app` layer ๋‚ด์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด NuxtJS ์„ค์ •์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
176+
177+
```ts title="nuxt.config.ts"
178+
export default defineNuxtConfig({
179+
devtools: { enabled: true }, // ๊ฐœ๋ฐœ ๋„๊ตฌ ํ™œ์„ฑํ™” (FSD์™€ ๋ฌด๊ด€)
180+
alias: {
181+
"@": '../src'
182+
},
183+
dir: {
184+
pages: './src/app/routes',
185+
layouts: './src/app/layouts'
186+
}
187+
})
188+
```
189+
190+
191+
## ์ฐธ๊ณ  ์ž๋ฃŒ
192+
193+
- [NuxtJS ํด๋” ์„ค์ • ๋ณ€๊ฒฝ ๋ฌธ์„œ](https://nuxt.com/docs/api/nuxt-config#dir)
194+
- [NuxtJS ๋ผ์šฐํ„ฐ ์„ค์ • ๋ณ€๊ฒฝ ๋ฌธ์„œ](https://nuxt.com/docs/guide/recipes/custom-routing#router-config)
195+
- [NuxtJS ๋ณ„์นญ(alias) ๋ณ€๊ฒฝ ๋ฌธ์„œ](https://nuxt.com/docs/api/nuxt-config#alias)
196+

0 commit comments

Comments
ย (0)