이번에 다양한 프로젝트에 참여해보면서 back-end
에도 관심이 생겼다. 그 중에서도 NestJS
를 사용해보려고 한다. NomadCoders
에서 강의를 듣고 시작했다.
- 다른 node.js의 프레임워크에 없는 구조를 가지고 있다.
- express위에서 움직인다.
- typescript기반이다.
- node.js 프로그램 빌드시 유용하게 사용된다.
- nestJs는 좋은 아키텍처와 구조를 가지고 있다. → Enterprise 프로젝트에 적합하다.
npm i -g @nestjs/cli
sudo npm i -g @nestjs/cli // 위 명령어 사용시, 권한 오류 발생한다면 다음 명령어로 설치하면 된다.
nest // 설치 확인
원하는 위치로 이동하여 프로젝트를 생성하여 준다. 나는 강의를 따라서 Documents 아래에 프로젝트를 생성하여 주었다. 다음과 같이 nset new
를 하면 프로젝트가 생성된다.
nest new // 새로운 프로젝트 생성
그리고 아래와 같이 프로젝트의 이름을 물어본다. 원하는 프로젝트명을 설정해주고 패키지 매니저도 설정하여 준다.
// 아래와 같은 안내문 보여지면
? What name would you like to use for the new project? (app-name) hi-nest
? Which package manager would you ❤️ to use? npm
프로젝트가 만들어지면 아래와 같은 화면을 볼 수 있다.
Nest.js
는 이미 만들어진 기능을 제공한다. (예를 들어,dependency/test폴더/src/controller/service등) 지금부터는 기본 기본 구조를 뜯어볼 것이다.
NestJS
는 기본적으로 main.ts
를 가지고 있다. 이름을 변경하지 말고 사용해야한다.
// 아래와 같이 함수를 가지고 있음(함수이름은 자유롭게 설정 가능), 3000포트를 리슨하고 있다.
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
모든 것의 루트 모듈
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
AppController
url
을 가져오고 함수를 실행하는 일을 한다.
(express의 router와 같은 존재 / 라우터 세팅이 필요없다.)
아래와 같이 @GET
데코레이터 사용시 반드시 꾸며주는 함수나 클래스와 붙여 사용한다.
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
AppService
비즈니스로직 처리
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
이번 기회에 back-end
도 공부하고 정ㄹㅣ해보려고 한다. 최종적으로는 하나의 서비스를 만들어 배포해보고 싶다. 앞으로 천천히 정리해야겠다!