[Nest.js] Nest.js_1

홍종훈·2023년 8월 22일
0

Nest

목록 보기
1/4
post-thumbnail

Nest.js를 사용하는 이유

Nest.js는 Node.js 위에서 동작하는 프레임워크로, 효과적이고 확장 가능한 서버 사이드 애플리케이션을 구축하기 위해 제공된다. Nest.js를 사용할 때의 장점은 다음과 같다.

  1. 모듈화와 확장성: Nest.js는 모듈 기반의 아키텍처를 사용하여 애플리케이션의 각 부분을 분리할 수 있다. 이로 인해 재사용성과 확장성이 향상된다.

  2. 강력한 Dependency Injection (DI): Nest.js는 Angular에서 영감을 받아 Dependency Injection 시스템을 제공한다. DI를 사용하면 애플리케이션의 다양한 부분을 더 쉽게 테스트하고 재사용할 수 있다.

  3. 데코레이터 기반: Nest.js는 TypeScript의 데코레이터를 광범위하게 사용하여 코드의 의도를 명확하게 표현하며, 개발자들이 개발 과정에서 추가적인 메타데이터를 쉽게 제공할 수 있게 한다.

  4. 테스트 용이성: Nest.js는 테스트를 쉽게 작성하고 실행할 수 있는 기능을 제공한다. 이는 백엔드 서비스의 품질을 보장하는 데 중요하다.

  5. 다양한 미들웨어 지원: Nest.js는 Express.js와 같은 다양한 미들웨어를 지원하여, 개발자가 기존에 익숙한 라이브러리나 플러그인을 사용할 수 있게 해준다.

  6. 다양한 WebSocket 라이브러리와의 통합: Nest.js는 웹소켓 기반의 기능을 쉽게 구현할 수 있도록 도와준다.

  7. 미리 정의된 프로젝트 구조: 프로젝트의 일관성과 유지보수성을 향상시키기 위해 Nest.js는 미리 정의된 프로젝트 구조를 제공한다.

  8. 다양한 Database 연동: Nest.js는 TypeORM, Sequelize, Mongoose 등과 같은 다양한 ORM 및 데이터베이스 라이브러리와 쉽게 연동된다.

  9. 모던한 JavaScript 및 TypeScript 지원: Nest.js는 모던한 JavaScript와 TypeScript의 기능들을 최대한 활용하며, 개발자에게 타입 안전성과 코드의 명확성을 제공한다.

  10. 풍부한 플러그인 및 확장 모듈: Nest.js 커뮤니티는 많은 추가 모듈과 플러그인을 제공하여, 다양한 기능을 쉽게 통합할 수 있다.

Nest.js 시작

Nest.js를 시작하려면 Nest CLI를 사용하여 프로젝트를 시작할 수 있다.

$ npm i -g @nestjs/cli
$ nest new project-name
$ npx @nestjs/cli new project-name

프로젝트를 생성하면 디렉토리 project-name가 생성되고, src폴더에 핵심 파일들이 채워집니다.

/src
app.controller.spec.ts
app.controller.ts
app.module.ts
app.service.ts
main.ts

핵심 파일들에 대한 간략한 개요는 다음과 같다.

1. app.controller.ts

  • 요청을 받아 응답을 처리하는 로직을 담당한다. 클라이언트의 요청을 처리하기 위한 라우팅과 관련된 로직을 포함하고 있다. (Express의 router와 비슷!)

    컨트롤러에는 기존엔 보지 못했던 @Get()이 있었다.
    @Get과 같이 앞에 @가 붙어있는 것은 데코레이터라는 패턴인데, 데코레이터란 함수나 class에 기능을 첨가해주는 것이다.
    기능 첨가를 통해 재사용성을 극대화 시킬 수 있다.
    위의 코드에선 getHello() 함수에 기능을 첨가한다.

2. app.service.ts

  • 비즈니스 로직이 포함되어 있는 곳이다. 컨트롤러에서 호출할 수 있는 메서드를 제공한다.

    app.service.ts는 비즈니스 로직을 포함한 메서드들을 정의하는 곳이다.
    이 메서드들은 컨트롤러에서 호출될 수 있으며, 서비스에서 반환된 값은 해당 메서드를 호출하는 컨트롤러로 전달된다.
    해당 서비스는 모듈의 providers 배열에 등록되어, Nest의 Dependency Injection 시스템을 통해 다른 컴포넌트에서 사용될 수 있게 된다.

3. app.module.ts

  • Nest.js에서 가장 중심이 되는 모듈이다. 이 파일은 애플리케이션의 모든 부분(컨트롤러, 프로바이더, 서비스 등)을 연결하는 역할을 한다.

    app.module.ts는 애플리케이션의 주요 모듈로서, 다양한 컴포넌트들을 연결한다.
    app.controller.ts에서 정의된 라우팅 로직은 main.ts를 통해 NestFactory에 의해 초기화되며,
    이를 통해 클라이언트의 요청을 적절한 컨트롤러와 라우터로 연결하여 처리한다.

4. main.ts

  • 애플리케이션을 부트스트랩(즉, 시작)하는 곳이다. 여기에서 NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 생성하고 실행한다.

5. app.controller.spec.ts

  • app.controller를 테스트하기 위한 파일.

Nest.js를 시작했을 때 만들어지는 핵심 파일들에 대해 간략하게 정리해봤다. 데코레이터, NestFactory에 대한 내용은 처음 들어보기에 추가로 공부해야할 것 같다.

profile
Search Engineer

0개의 댓글