지난 시간에 nest.js 셋업에 이어서
이번 시간에는 nest.js client로 프로젝트를 생성하였을 때 기본적으로 생성되는 파일과 client 요청에 따른 흐름을 알아보겠습니다.
1. 기본적으로 생성되는 파일
1.eslintrc.js : 개발자들이 특정한 규칙을 가지고 코드를 깔끔하게 짤 수 있도록 도와주는 라이브러리, 타입스크립트를 쓰는 가이드 라인 제시, 문법에 오류가 나면 알려주는 역할 등
2. prettierrc : 주로 코드 형식을 맞추는데 사용합니다. 작은 따옴표를 사용할지 큰 따옴표를 사용할지 Indent 값을 두줄로 줄지 네줄로 줄지등등 에러 찾는 것이 아닌 코드 포멧터 역할
3. nest-cli.json : nest 프로젝트를 위한 특정한 설정을 할 수 있는 json 파일
4. tsconfig.json : 어떻게 타입스크립트를 컴파일 할지 설정
5. tsconfig.build.json : tsconfig.json의 연장선상 파일이며, build를 할 때 필요한 설정등 "excludes"에서는 빌드할 때 필요 없는 파일들 명시
6. package.json : build : 운영환경을 위한 빌드, format: 린트에러가 났을지 수정, start : 앱 시작
7. src : 대부분의 비지니스 로직이 들어가는 곳
2. client 요청에 따른 흐름
client(브라우저)에서 localhost:3000번으로 요청을 보내면
nest.js 애플리케이션에서는 app.module 요청에 대한 진입점 역할을 하는데 요청을 구분해서 등록되어 있는 controller에 요청을 전달합니다.
controller로 요청을 보내고, service에서 'Hello World!'라는 문자열을 리턴 받아서 client에서 응답하는 흐름입니다.
1. app.module.ts
- controllers에 AppController가 providers에 AppService가 등록되어 있습니다.
- 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 {}
2. app.controller.ts
- @Get 데코레이터를 보시면 "/" 요청이 오면 getHello() 함수를 실행하도록 되어 있습니다.
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
3. app.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
모듈이란
모듈은 @Module() 데코레이터로 주석이 달린 클래스입니다. @Module() 데코레이터는 Nest가 애플리케이션 구조를 구성하는 데 사용하는 메타 데이터를 제공합니다.
각 응용 프로그램에는 하나 이상의 모듈이 있습니다. 루트 모듈(AppModule)은 Nest가 사용하는 시작점입니다.
모듈은 밀접하게 관련있는 기능 집합으로 구성 요소를 구성한느 효과적인 방법입니다.
모듈은 기본적으로 싱글 톤이므로 여러 모듈간의 쉽게 공급자의 동일한 인스턴스를 공유 할 수 있습니다.
참조
'NestJS' 카테고리의 다른 글
[Nest.js] PIPE (0) | 2023.08.27 |
---|---|
[Nest.js] TypeORM 이용한 CRUD (0) | 2023.08.22 |
[Nest.js] Quick Start! (0) | 2023.08.15 |