1. Hello NestJS

Hello World🙇🏻‍♀️·2023년 12월 1일
post-thumbnail

서버측 애플리케이션을 구축하기 위한 진보적인 Node.js 프레임워크입니다.

1.1 NestJS의 장점

NestJS는 Node.js에 기반을 둔 웹 API 프레임워크로서 Express 또는 Fastify 프레임워크를 래핑하여 동작합니다. (Express, Fastify 모두 Node.js를 쉽게 사용하기 위한 프레임워크 입니다.)

NestJS가 express를 기본으로 사용하는 이유

NestJs는 기본 설치 시 express를 사용합니다. Fasityfy는 Express와의 벤치마크 결과 2배정도 빠른 속도를 자랑합니다. 그럼에도 NestJS가 기본으로 Express를 사용하는 이유는 Express가 가장 널리 사용되고 있고, 수많은 미들웨어가 NestJS와 호환되기 때문입니다.

장점1. Node.js 기반의 확장성

Node.js는 손쉽게 사용할 수 있고 뛰어난 확장성을 가지고 있지만, 과도한 유연함으로 인해 결과물 소프트웨어 품질이 일정하지 않고 알맞은 라이브러리를 찾기 위해 사용자가 많은 시간을 할애해야 합니다.

NestJS는 DB, 객체관계매핑(ORM), 설정(configuration), 유효성 검사 등 수많은 기본 기능을 제공합니다. 그러면서도 필요한 라이브러리를 쉽게 설치하고, 확장할 수 있는 Node.js장점을 그대로 가지고 있습니다.

장점2. 모듈/컴포넌트 기반으로 재사용성 향상

Nest.JS는 앵귤러로 영향을 많이 받아 모듈/컴포넌트 기반으로 프로그램을 작성함으로써 재사용성을 높입니다.

장점 3. 객체지향 개념 도입

그 외 제어의 역전(inversion of control IoC), 의존성 주입 (dependency injection DI), AOP(aspect-oriented programing)같은 객체 지향을 도입하였습니다.

장점 4. 타입스크립트 선택

프로그래밍 언어로는 타입스크립트를 기본으로 채택하여 타입스크립트가 가진 타입 시스템의 장점을 누릴 수 있습니다.

장점 5. 웹 프레임워크의 기본요소

NestJS는 아래 요소들을 대부분 내장하고 있고, 내장하지 않은 기능 역시 쉽게 다른 모듈을 가져다 쓸 수 있습니다.

  • 최신 ECMA 스크립트 지원
  • 타입 스크립트
  • CQRS
  • HTTP 헤더 보안 (Express helmet을 사용)
  • 편리한 설정
  • 인터셉터
  • 다양한 미들웨어
  • 스케줄링
  • 로깅
  • 테스팅
  • 스웨거 문서화
  • ORM

1.2 Express가 좋을까, NestJS가 좋을까

ExpressNestJS
유연함/확장성가볍게 테스트용 서버를 띄울 수 있습니다. 아이디어를 빠르게 검증하는데에는 좋지만, 자유도가 높아 라이브러리를 찾는데 있어서 시간이 소요됩니다. 보일러 플레이트를 미리 얹어 놓은 깃허브 저장소를 활용해도 좋습니다.미들웨어, IoC, CQRS 등 이미 많은 기능을 프레임워크 자체에 포함합니다. 사용자는 문서를 보고 쉽게 따라할 수 있습니다. 원하는 기능이 없다면 라이브러리를 적용해서 사용할 수 있습니다.
타입스크립트 지원추가 설정기본설정
커뮤니티가장 큰 규모꾸준히 증가

1.3 NestJS 설치

nest new project-name

설치를 마치면 보일러플레이트(꼭 필요한 기본 기능을 미리 준비해놓은 코드) 코드가 생성됩니다.

운영이 아닌 개발 단계에서는 npm run start 대신 npm run start:dev 명령어를 이용하는게 좋습니다. package.json에 기술된 스크립트를 보면 start:dev 키에 해당하는 값은 nest start --watch입니다. (--watch 옵션을 소스 코드를 변경해서 코드를 저장할 때마다 서버를 다시 구동하는 옵션입니다.)

업로드중..

포트는 기본 3000번으로 설정되어 있는데, main.ts 파일을 보면 3000번 포트를 설정했음을 확인할 수 있습니다.

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

추가로 공부할꺼
1. express란?
2. 라이브러리란?
3. 프레임워크란?

0개의 댓글