[Nest.js] 투두리스트 수정하기 (4)-a (11.19~11.23)

In9_9yu·2021년 11월 23일
2

TodoList

목록 보기
4/8
post-thumbnail

0. 오늘은 뭐했니?

  • nestjs 강의를 들으며 어떻게 동작하는지 알아보자
  • express 서버를 nestjs로 바꿔보자. (최종목표)

1. 갑자기 왜?

이유는 없다. 해 보고 싶다면, 그리고 할 수 있다면 해보는거지.
그래도 이유를 말해보라 하면, nodejs를 체계적으로 사용해보고 싶었다.

nodejs의 최대 장점은 높은 자유도라고 생각한다. 정말 원하는 것이 있다면 커스터 마이징이 가능하다. 하지만, 너무 많은 자유(선택지)는 개발자로 하여금 혼란을 줄 수도 있을 것이다.

그러나, 처음부터 지켜야 할 규칙이 있다면, 우리는 그 규칙만 따라서 작성하면 되므로, 더 나은 구조에 대해서 생각을 덜 해도 된다.

어째 생각하기 싫어서 nestJs를 사용한다는 소리처럼 들리는 건 기분탓

2.구조

1. nestJS의 구조

nestjs는 아래와 같은 구조를 가진다. (출처 - Nest JS 공식 홈페이지)
Nest JS 구조

각 모듈을 독립적으로 개발하고, AppModule에 붙여주면 끝.

그리고, A라는 모듈에서 B라는 모듈을 사용하고 싶다면, B모듈에 @Global 데코레이터를 사용하면 가능하다.

2. 작업 Flow
작업 Flow

3. 새로 들어본 개념들

Decorator

참고한 게시물 - Exploring EcmaScript Decorators

DTO (Data Transform Object)
계층간 데이터 교환을 위한 객체라고 한다. 어렴풋이 왜 사용하는지는 알겠다.

예를 들어 클라이언트에서 Body에 4개의 정보를 실어서 보내고, 이 데이터를 사용해야하는 함수가 4개가 있다고 가정해보자.

Body

{ name:'Mondol',
  age: 5,
  height : 175,
  weight : 70
}

Function

const A = (name:string,age:number,height:number,weight:number) => {}
const B = (name:string,age:number,height:number,weight:number) => {}
const C = (name:string,age:number,height:number,weight:number) => {}
const D = (name:string,age:number,height:number,weight:number) => {}

이 상황에서 사용자에게 들어오는 정보에 color 정보가 추가로 들어온다고 가정하면, A,B,C,D 모두에게 color type을 추가적으로 작성해야 한다. 그런데 DTO를 Type으로 넘겨주면, DTO 클래스에 그냥 color 하나만 더해주면 끝!

class createDTO {
	name : string;
  	age : number;
  	height : number;
  	weight : number;
  	color : string;
}

근데 낯설지가 않다. 원래 typescript에서는 인수에 들어갈 type을 원래부터 지정해주지 않았나? 다음과 같이 말이다. (동작도 정상적으로 한다)

interface createDTO{
  	name : string;
  	age : number;
  	height : number;
  	weight : number;
  	color : string;
}

그렇다면 자연스럽게 나오는 질문은... class와 interface는 무슨 차이인데?

다음 시간에 알아보자...

profile
FE 임니다

0개의 댓글

관련 채용 정보