먼저 nest의 특징과 프로젝트를 생성했을 때 구성들에 대한 기록이다.
NestJS 특징
NestJS는 기본적으로 TypeScirpt를 사용한다.
Express 위에서 돌아가는 프레임워크로 비교적 자유도가 낮은 편이다.
이는 구조가 있다는 뜻이고, 실수할 가능성이 적고, 보다 체계화된 코드를 작성할 수 있다.
Installation
CLI
$npm install -g @nests/cli
nest는 명령어를 많이 사용한다.
따라서 nest cli를 설치한다.
위의 코드로 nest cli를 설치하면, nest 명령어를 사용할 수 있다.
nest를 입력했을 때 위와 같은 명령어들이 나온다면, 정상적으로 설치된 것이다.
프로젝트
$nest new [name]
위의 명령어로 프로젝트를 생성해준다.
초기 Nest 프로젝트는 위와 같은 폴더 구조를 가지고 있다.
구조
package.json
먼저 package.json의 scripts의 값을 보자.
프로젝트를 실행시켜줄 수 있는 명령어들이 있다.
개발 단계에서는 주로 아래와 같은 명령어를 사용한다.
$npm run start:dev
package.json 파일에서 보면 "nest start --watch"라고 되어있는데
이는 프로젝트를 실행시키고, 파일을 저장할 때마다 자동으로 변경사항을 반영한다는 것을 의미한다.
개발 단계에서 굉장히 유용한 기능이다.
main.ts
main.ts 파일은 프로젝트의 root 파일이라고 할 수 있다.
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
- NestFactory : create 메서드를 통해 Nest 응용 프로그램의 인스턴스를 생성한다. AppModule을 인자로 전달했는데 AppModule은 아래의 기록을 참고하자.
- listen(3000) : 3000은 포트 번호를 말한다. 이대로 프로젝트를 실행하면, localhost:3000에서 실행될 것이다.
app.module.ts
Nest 프로젝트에서 모듈은 한 기능을 수행하는 부품 같은 역할을 한다.
ex) 채팅 모듈, 주문 모듈 등
그렇다면 이 부품을 조합할 모듈이 필요할 것이다.
바로 그 역할을 하는 것이 app module이다.
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
- imports : 위에서 언급한 부품들을 가져올 곳이다. 부품 모듈들을 import 하는 역할을 한다.
공식 문서에서 가져온 모듈의 구조이다.
위와 같이 여러 부품 모듈을 Application Module에서 조합하는데
imports를 통해 조합하는 것이다.
출처
마치며
초기 프로젝트의 controller.ts와 service.ts 파일에 대해서는
두 파일의 관계와 각각에 대한 설명이 필요해 기록이 길어질 것 같아 나누기로 했다.
잘못된 기록에 대한 피드백은 환영입니다.
감사합니다.
'Backend > NestJS' 카테고리의 다른 글
[NestJS Overview] NestJS jest로 테스트하기(2) (e2e testing) (1) | 2022.12.09 |
---|---|
[NestJS Overview] NestJS jest로 테스트하기(1) (unit testing) (0) | 2022.12.07 |
[NestJS Overview] NestJS DTO 생성, 유효성 검사 해보기 (0) | 2022.12.07 |
[NestJS Overview] Service.ts(서비스 파일, 반환 클래스, 예외처리) (0) | 2022.12.07 |
[NestJS Overview] controllers 파일(참조 순서, Routing) (0) | 2022.12.07 |