NestJS 어려운 개념 정리 1

커피 내리는 그냥 사람·2021년 4월 14일
0

기업협업 인턴십

목록 보기
5/16

어려운 개념 정리

1. module

참고 링크

  • 데코레이터로 정의된 클래스
  • 모듈의 조합을 통해 NestJS의 구조 전체가 결정된다.
  • app은 반드시 하나의 루트 모듈이 있어야 작동. 기능을 구현하는 모든 것들이 연결되어 있다.

필요한 인자들

참고 링크

1. controller

  • Request, Response를 처리하는 로직. 특정 라우터에 붙여서 구체적인 요청을 받아서 처리.

    한마디로 데이터베이스에 접근할 수 있는 전문적인 attribute를 만들어 주는 역할 같은 것. 즉 어떤 요청에 대한 직접적인 url 파트 그 이상. django에 url에 더 많은 아키텍쳐라고 생각하면 될 것 같다. 아주 비슷하지는 않지만 유사한 점이 있다.

2. provider : 가장 핵심적인 파트

  • 프로바이더로 취급되는 것 : services, repositories, factories, helpers 등
  • 객체들이 다른 것들과 다양한 관계를 맺을 수 있게 도와주는 것. @Injectable()데코레이터를 이용

3. services

  • 실제로 함수를 가지고 있는 부분, 비즈니스 로직을 실행하는 역할. 필요한 데이터베이스에 연락.

    보아하니 provider 안에서 실행되는 것 같고 실제 로직을 담당하는 것으로 볼 때 django에 view에 가깝지 않을까 싶다.

4. export

  • 임포트하는 모듈에서 사용할 프로바이더를 지정해준다.
  • export default는 한 파일에서 하나만 지원
  • export가 되지 않으면 import 할 수 없다.

5. import

  • 다른 모듈을 임포트하여 연결해준다.

2. DTO(Data Transfer Object)

참고 링크
참고 링크

  • 데이터를 교환하기 위한 객체로 만드는 것, 타입
  • 주체가 누구인가 : DTO class
  • 왜 하는가? : 서버로 요청과 전달을 할 때 매번 매개변수와 로직을 조작하여 수행하는게 번거로워서
  • 요청과 응답에 대한 클래스를 만들어서 자동화 시킨 것이 DTO

아마 models.py에 가깝지 않을까...?

3. Dependency Injection(의존성 주입)

  • 쓸 기능에 필요한 값들을 외부에서 받아서 쓰는 것이라 하는데 아직 감이 안 온다.

참고 링크
참고 링크

  • 자바가 예시라서 무슨 소린지는 정확히 모르겠으나 대략 정의하면 다음과 같을 것 같다.

(블로그 참고) DI, 의존성 주입은 필요한 객체를 직접 생성하는 것이 아닌 외부로 부터 필요한 객체를 받아서 사용하는 것이다.

의존성 주입은 외부로부터 필요한 객체를 받아서 사용한다. 이를 통해서 유닛테스트가 용이해지고 코드 재활용성이 높아지며 객체간 의존성, 혹은 종속성이 줄어들고 유연한 코드를 짤 수 있다.

일단 기본 개념은 정리가 되었다. NestJS를 쓰면서 익숙해지자.

4. private vs public

타입스크립트 문법이었음

  • private : 비공개
  • public : 공개
profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글