ํฐ์คํ ๋ฆฌ ๋ทฐ
๐งฉ NestJS Module ์์ ์ดํด – ๊ตฌ์กฐ์ ๋ฐฑ์๋ ์ค๊ณ์ ์ถ๋ฐ์
octo54 2025. 4. 15. 11:21๐งฉ NestJS Module ์์ ์ดํด – ๊ตฌ์กฐ์ ๋ฐฑ์๋ ์ค๊ณ์ ์ถ๋ฐ์
NestJS์์ **Module(๋ชจ๋)**์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฅ ๋จ์๋ก ๊ตฌ์ฑํ๋ ํต์ฌ ๊ตฌ์กฐ ๋จ์์
๋๋ค.
NestJS ๊ณต์ ๋ฌธ์์ Modules๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธ ๋ฒ์ญ๊ณผ ํจ๊ป, ์ค๋ฌด์ ํ์ํ ๊ตฌ์กฐ ์ค๊ณ ๋ฐฉ๋ฒ๊น์ง ํด์คํฉ๋๋ค.
NestJS์์ ๋ชจ๋ ๊ฒ์ ๋ชจ๋๋ก ์์๋๊ณ , ๋ชจ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ๊ทน๋ํํ๋ ค๋ฉด ๋ชจ๋ ์ค๊ณ๋ถํฐ ์ํด์ผ ํฉ๋๋ค.
โ NestJS์์ Module์ด๋?
NestJS๋ ๊ตฌ์กฐ์ ๋ฐฑ์๋ ์ค๊ณ๋ฅผ ์งํฅํ๊ธฐ ๋๋ฌธ์, ๊ฐ ๊ธฐ๋ฅ๋ณ๋ก Controller, Service, DTO ๋ฑ์ ๋ฌถ์ด ๋ชจ๋๋ก ๋ถ๋ฆฌํฉ๋๋ค.
๋ชจ๋ Nest ์ ํ๋ฆฌ์ผ์ด์ ์ **์ต์ํ ํ๋์ ๋ฃจํธ ๋ชจ๋(AppModule)**์ ํฌํจํด์ผ ํ๋ฉฐ, ์ถ๊ฐ ๊ธฐ๋ฅ์ **์๋ธ ๋ชจ๋(SubModule)**๋ก ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
1๏ธโฃ ๊ธฐ๋ณธ Module ๊ตฌ์กฐ
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
})
export class CatsModule {}
ํต์ฌ ํฌ์ธํธ:
- controllers: ๋ผ์ฐํ ์ ์ฒ๋ฆฌํ๋ ํด๋์ค
- providers: ์๋น์ค, ํฌํผ, ์ ํธ ๋ฑ ์ฃผ์ ๊ฐ๋ฅํ ๊ฐ์ฒด
- imports: ๋ค๋ฅธ ๋ชจ๋์ ๊ฐ์ ธ์ฌ ๋
- exports: ์ธ๋ถ์ ๋ ธ์ถํ provider/service
2๏ธโฃ AppModule ๊ตฌ์ฑ ์์
import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';
@Module({
imports: [CatsModule],
})
export class AppModule {}
๋ชจ๋ ๊ธฐ๋ฅ์ AppModule์์ ๊ฐ์ ธ์์ ์กฐ๋ฆฝํฉ๋๋ค.
์ฆ, AppModule์ ํ๋ก์ ํธ์ ๋ฃจํธ ์กฐ๋ฆฝ๊ณต์ฅ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค.
๐ฆ CLI๋ก ๋ชจ๋ ์์ฑํ๊ธฐ
nest g module cats
Nest CLI๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ํด๋์ ํ์ผ์ด ์ ๋ฆฌ๋ ์ํ๋ก ์์ฑ๋ฉ๋๋ค.
src/
cats/
cats.module.ts โ
cats.controller.ts
cats.service.ts
๊ตฌ์กฐํ๋ ๋ชจ๋ ๋จ์ ๊ฐ๋ฐ์ ๊ฐ์ ํ๋ฏ๋ก ๋๊ท๋ชจ ํ ํ๋ก์ ํธ์์ ๊ฐ๋ ฅํ ์ ์ง๋ณด์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
๐บ ๊ด๊ณ
์ด ๊ตฌ๊ฐ์ ๋ชจ๋ ๊ฐ๋ ์ด ์์ ํ ์ ๋ฆฌ๋๋ ์์ ์ผ๋ก, ๋ธ๋ก๊ทธ์ ์ ๋์ผ์ค ๊ด๊ณ ๋ฅผ ์ฝ์ ํ๋ฉด ํด๋ฆญ๋ฅ ์ด ๋์ต๋๋ค.
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-XXXX"
data-ad-slot="YYYY"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
3๏ธโฃ ๋ชจ๋ ๊ฐ ์์กด์ฑ ์ฐ๊ฒฐ – imports & exports
๋ชจ๋์ ์์ฒด์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋์ด ์์ง๋ง, ๋ค๋ฅธ ๋ชจ๋๊ณผ ์ฐ๊ฒฐํด์ผ ํ ๋๋ imports์ exports๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@Module({
providers: [CatsService],
exports: [CatsService],
})
export class CatsModule {}
@Module({
imports: [CatsModule],
})
export class DogsModule {}
- CatsModule์ CatsService๋ฅผ ์ธ๋ถ์ exports ํ์๊ณ
- DogsModule์ CatsModule์ imports ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ
4๏ธโฃ Global Module – ์ ์ญ ๋ชจ๋ ๋ง๋ค๊ธฐ
๋ชจ๋ ๋ชจ๋์ ๋์ผํ ์๋น์ค๋ฅผ ์ฃผ์ ํ๊ณ ์ถ๋ค๋ฉด @Global() ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@Global()
@Module({
providers: [ConfigService],
exports: [ConfigService],
})
export class ConfigModule {}
์ด๋ ๊ฒ ํ๋ฉด ConfigService๋ฅผ ๋ชจ๋ ๋ชจ๋์์ imports ์์ด๋ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ์: ๋จ์ฉํ๋ฉด ๋ชจ๋ ๊ฐ ์์กด์ฑ์ด ์ ๋งคํด์ ธ์ ํ ์คํธ์ ์ ์ง๋ณด์์ ์ด๋ ค์์ด ์๊น๋๋ค.
5๏ธโฃ Dynamic Module – ๋์ ์ผ๋ก ๊ตฌ์ฑ๋๋ ๋ชจ๋
@Module({})
export class ConfigModule {
static register(options: ConfigOptions): DynamicModule {
return {
module: ConfigModule,
providers: [{ provide: 'CONFIG_OPTIONS', useValue: options }],
exports: ['CONFIG_OPTIONS'],
};
}
}
register()๋ฅผ ํตํด ๋ฐํ์์ ๋ชจ๋ ์ค์ ๊ฐ์ ์ธ๋ถ์์ ์ฃผ์ ํ ์ ์๋ ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ค๋ฌด์์ DatabaseModule, CacheModule, MailModule ๋ฑ์ ๊ตฌ์ฑํ ๋ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
โ ์ค๋ฌด ์ค๊ณ ์ ๋ต: ๊ธฐ๋ฅ ๋จ์๋ก ๋ชจ๋์ ๋๋์
๋ชจ๋๋ช ํฌํจ ๋ด์ฉ
UserModule | user.controller.ts, user.service.ts, user.repository.ts |
AuthModule | ๋ก๊ทธ์ธ, ์ธ์ฆ ๊ด๋ จ ๋ก์ง ๋ฐ Strategy |
PostModule | ๊ฒ์๋ฌผ ์์ฑ/์กฐํ ์๋น์ค |
CommonModule | ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ ํธ, DTO, ํํฐ, ์ธํฐ์ ํฐ ๋ฑ |
ํ๋์ ํด๋์ ๋ชจ๋ ์ฝ๋๋ฅผ ๋ชฐ์๋ฃ๋ ์ค๊ณ๋ ์ฅ๊ธฐ์ ์ผ๋ก ํฐ ์ ์ง๋ณด์ ๋น์ฉ์ ์ด๋ํฉ๋๋ค.
๐ง ๋ง๋ฌด๋ฆฌ ์ ๋ฆฌ
๊ฐ๋ ์ค๋ช
@Module | ๋ชจ๋ ์ ์ ๋ฐ์ฝ๋ ์ดํฐ |
controllers | HTTP ์์ฒญ์ ์ฒ๋ฆฌ |
providers | ์๋น์ค, ํฌํผ ๋ฑ์ ์ ์ |
imports | ๋ค๋ฅธ ๋ชจ๋์ ์ฐ๊ฒฐ |
exports | ์ธ๋ถ ๋ชจ๋์์ ์ฌ์ฉํ provider ๊ณต๊ฐ |
@Global() | ์ ์ญ์์ ํ ๋ฒ๋ง ์ค์ ํ์ฌ ์ฌ์ฉ |
register() | ๋์ ๊ตฌ์ฑ ๋ชจ๋ ํจํด |
NestJS Module,NestJS ๋ชจ๋ ๊ตฌ์กฐ,NestJS imports exports,NestJS ๊ธ๋ก๋ฒ ๋ชจ๋,NestJS ์ค๊ณ,NestJS register,Dynamic Module,NestJS ๊ตฌ์กฐํ,Node.js ๋ฐฑ์๋,์๋น์ค ๋ถ๋ฆฌ ์ค๊ณ
'framework > NestJS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- Next.js
- AI์ฑ๋ด
- ๋ฐฑ์๋๊ฐ๋ฐ
- CI/CD
- kotlin
- REACT
- App Router
- NestJS
- PostgreSQL
- Prisma
- gatsbyjs
- flax
- JAX
- Docker
- SEO์ต์ ํ
- SEO ์ต์ ํ
- fastapi
- ํ์ด์ฌ์๊ณ ๋ฆฌ์ฆ
- nextJS
- seo ์ต์ ํ 10๊ฐ
- llm
- Python
- ํ๋ก ํธ์๋๋ฉด์
- ํ๋ก ํธ์๋
- rag
- ์น๊ฐ๋ฐ
- ๋ฅ๋ฌ๋
- nodejs
- Ktor
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |