• 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 프레임 워크

  • JavaScript & TypeScript 완벽 지원

  • OOP (Object Oriented Programming) , FP ( Functional Programming),

    FRP(Functional Reactive Programming) 요소 사용 가능

    OOP란 …

    • 캡슐화

      하나의 객체에 그 객체에 필요한 요소 묶기

    • 상속성

      기존 상위클래스에 근거하여 새롭게 클래스와 행위 정의함

    • 다형성

      (오버라이딩, 오버로딩)

      같은 동작에 다른 결과물 나오게 함

    • 추상화

      클래스 틀만 구성하고 최소 필수적 공통요소만 포함시킴

    내부 구성

    Express와 같은 강력한 Http 서버 프레임워크 사용 ( 토대로 만듦)

    선택적 Fastify 사용하도록 구성

    구성 철학

    개발자와 팀이 고도로 테스트 가능하고 확장 가능, 느슨한 결합, 유지 관리가 쉬운

    즉시 사용 가능한 애플리케이션 아키텍쳐 제공

    시작하기

    npm i -g @nestjs/cli

    npm new ./

    하면 현재 폴더가 nest 사용 폴더가 됨

    시작시 npm run start:dev

    Untitled

    @Controller()
    export class AppController {
      constructor(private readonly appService: AppService) {}
    
      @Get()
      getHello(): string {
        return this.appService.getHello();
      }
    }
    
    @Injectable()
    export class AppService {
      getHello(): string {
        return '안녕하세요!';
      }
    }
    

    컨트롤러와 서비스 Spring 과 동일

    @Module({
      imports: [],
      controllers: [AppController],
      providers: [AppService],
    })
    export class AppModule {}
    

    app.module.ts 란 곳에서 controller와 providers 정의하고 있다.

    async function bootstrap() {
      const app = await NestFactory.create(AppModule);
      await app.listen(3000);
    }
    bootstrap();
    

    등록 후 main.ts에서 모듈 생성하고 실행함

    app.module.ts에서 모듈을 등록한다. 라우터 역할 함