nest.js ์ค์น -> ํ๋ก์ ํธ ํด๋ ์์ฑ๊น์ง ์๋ฃํ ํ์ ํ๊ฒฝ์ค์
ํ์ผ์ ์ฝ๋๋ค์ service -> controller -> module -> main ์ผ๋ก ํ๋ฌ๊ฐ๋ค.
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// ใดAppModule์ด๋ผ๋ ๋ชจ๋์ ๋ฃจํธ ๋ชจ๋๋ก ์ฌ์ฉํ๋ Nest.js ์ดํ๋ฆฌ์ผ์ด์
์ธ์คํด์ค๋ฅผ ์์ฑํด์ค!
await app.listen(3000);
}
bootstrap();
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
@Module : ๋ฐ์ฝ๋ ์ดํฐ ( ํด๋น ํด๋์ค, ํจ์๊ฐ ์ด๋ค ์ญํ ์ ์ํํ๋์ง์ ๋ํด nest.js์ ์๋ ค์ฃผ๋ ์ญํ )
imports : ํด๋น ๋ชจ๋์์ ํ์ํ ๋ชจ๋์ ์งํฉ์ ์ ์.
์ฌ๊ธฐ์ ๋ค์ด๊ฐ๋ ๋ชจ๋์ ํ๋ก๋ฐ์ด๋(์๋น์ค)๋ฅผ ๋
ธ์ถํ๋ ๋ชจ๋.
ํํ ์ํฌํธ๋ฅผ ํ๋ ๋ชจ๋ : HttpModule, TypeOrmModule ๋ฑ.
controllers : ํด๋น ๋ชจ๋์์ ์ฌ์ฉํ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์.
providers : ํด๋น ๋ชจ๋์์ ์ฌ์ฉํ๋ ์๋น์ค๋ฅผ ์ ์.
exports : ํด๋น ๋ชจ๋์์ ๋
ธ์ถ์ํฌ ์๋น์ค๋ฅผ ์ ์.
๋ค๋ฅธ ๋ชจ๋์์ ํด๋น ๋ชจ๋์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ exports๋ก ๋
ธ์ถ์ ํด์ผ ์ฌ์ฉํ ์ ์์.
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
//์ธ์๋ก AppService ๊ฐ์ฒด๋ฅผ ๋๊ธฐ๋ฉด this.appService๋ผ๋ ๋ฉค๋ฒ ๋ณ์์ AppService ๊ฐ์ฒด๊ฐ ์ฃผ์
@Get()
getHello(): string {
return this.appService.getHello();
}
}
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
// module ์์ฑ ๋ช
๋ น์ด
nest g mo board
// controller ์์ฑ ๋ช
๋ น์ด
nest g co board
// service ์์ฑ ๋ช
๋ น์ด
nest g s board
// ํ์ดํ ์์ฑ ๋ช
๋ น์ด
nest g pi board-status-validation.dto
์ ์ด ์ญ์
IoC๋ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๊ณ ์ถ์ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด์ ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ ์์ฒด๋ฅผ ์ธ๋ถ(์ฌ๊ธฐ์๋ Nest.js IoC ์ปจํ
์ด๋)์ ์์์ ํจ.
์ฆ, ๊ฐ์ฒด์ ๊ด๋ฆฌ๋ฅผ ์ปจํ
์ด๋์ ๋งก๊ฒจ์ ์ ์ด๊ถ์ด ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ IoC(์ ์ด ์ญ์ )๋ผ๊ณ ํ๋ค.
IoC๋ ๋ชจ๋ ๊ฐ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ชจ๋์ด ๋ณ๊ฒฝ๋์ด๋ ๋ค๋ฅธ ๋ชจ๋๋ค์๋ ์ํฅ์ ์ต์ํ๋์ด ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์ง์ ๊ฐ๋ฅํ๊ณ ํ์ฅ์ฑ ์๊ฒ ํด์ค๋ค.
DI๋ ์ด๋ฐ IoC๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ํ๋์ด๋ฉฐ Nest.js์์๋ ์์ฑ์๋ฅผ ํตํ DI๋ฅผ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ IoC ํ ํฌ๋์ผ๋ก ์๊ฐํ๊ณ ์์.