728x90
nest js를 사용한 이유
Express는 사용하기도 쉽고 성능도 뛰어나지만 아키텍처에 관한 정의나 기능을 제공해주고 있진 않습니다.
Nest의 최대의 장점은 아키텍처를 통일하는데 쉽다는 것이라고 생각합니다.
Nest의 구조를 보면
하나의 루트 모듈이 존재하고 이 루트 모듈(일반적으로 AppModule)은 다른 모듈들로 구성되도록 하는 것입니다.
이렇게 모듈로 쪼개는 이유는 앞서 설명한 여러 모듈에게 각기 맡은 바 책임을 나누고 응집도를 높이기 위함입니다.
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
import { DogsModule } from '../dogs.module';
@Module({
imports: [DogsModule], // 싱글톤으로 다른 모듈을 가져올 수 있다.
controllers: [CatsController], // 인스턴스화 해야하는 해당 모듈에 정의된 controller
providers: [CatsService], // Nest injector에 의해 인스턴스화 되고 해당 모듈에서 사용할 provider
exports: [CatsService] // providers에서 제공하는 모듈이 포함되어야하며 다른 모듈에서도 사용할 수 있게 해줌
})
export class CatsModule {}
그러한 모듈안에는 컨트롤러가 존재합니다. 컨트롤러는 요청을 처리하고 응답을 반환하는 역할을 합니다. Express의 route폴더를 생성하는 것과 비슷합니다.
import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get() // 요청 받는 url 및 method 지정
findAll(): string {
return 'This action returns all cats';
}
}
Provider는 핵심은 종속성 주입이 가능하다는 것입니다. Controller에는 여러 서비스들이 필요할 수 있는데 이때 Provider에 의해서 Controller에 서비스를 넣어줄 수 있습니다.
728x90
'토이프로젝트 > NextNestBlog' 카테고리의 다른 글
[ERROR] refactoring 제대로 하자 (0) | 2022.10.13 |
---|---|
싱글톤 패턴 (0) | 2022.10.10 |
프로젝트 씹고 뜯고 즐기기 클라이언트 2 next js를 사용하는 이유 (0) | 2022.10.06 |
프로젝트 씹고 뜯고 즐기기 클라이언트 1 (0) | 2022.10.06 |
블로그 제작 미니멈 후기 (0) | 2022.10.04 |