다재다능 개발자 성장기 🚀
항해99 👩💻54일차 TIL 본문
⭐ Final Project ⭐
- 어제 수강하였던 인프런에서 구매한 NestJS강의에는 CRUD 구현하는 부분이 없어서, 우선 CRUD 뼈대를 만들기 위하여 유투브에 NestJS로 CRUD앱 만드는 강의를 찾아서 절반정도 수강하였다.
🐣 Today I Learned 🐣
NestJS는 객체지향적인 MVC패턴을 사용하고 있다. 그리고 싱글톤 패턴을 지향하기 때문에 인스턴스를 직접 생성하지 않고 모듈을 통해 Injection 하는 패턴을 권장하고 있다.
Controller
클라이언트에서 들어오는 Request를 받는 역할과 동시에 클라이언트에게 Response를 하는 역할을 한다.
특정 라우터에 붙여서 구체적인 요청을 받아서 처리한다. NestJS에서는 기본 컨트롤러를 만들려면 클래스와 데코레이터를 사용한다. 데코레이터는 요청을 컨트롤러에 연결하여 NestJS가 라우팅 맵을 만들 수 있도록 한다.
Module
모듈은 @Mudule 데코레이터로 정의된 클래스이며, 이 모듈들의 조합을 통해 NestJS의 구조가 결정된다.
애플리케이션은 반드시 하나의 Root Mudule이 있어야 작동하며 그 외의 기능들을 구현하는 모듈들을 Root Modules로 연결하여 사용한다. @Module 데코레이터는 아래의 인자들을 받아 모듈을 구성할 수 있다.
- provider: 많은 Nest의 기본 클래스들은 Provider로서 취급된다. (services, repositories, factories, helpers 등) Provider의 기본적인 아이디어는 의존성을 주입하는 것이다. 즉, 객체들이 다른 것들과 다양한 관계를 만들 수 있다는 것이다. 하나의 Provider는 @Injectable() 데코레이터로 간단하게 클래스에 annotated된 형태이다.
- controllers: 이 모듈안에서 정의된, 인스턴스화 되어야하는 컨트롤러의 집합이다.
- imports: 해당 모듈에서 필요한 모듈의 집합. 여기에 들어가는 모듈은 프로바이더를 노출하는 모듈이다.
- exports: 해당 모듈에서 제공하는 프로바이더의 부분집합이며, 이 모듈을 가져오는 다른 모듈에서 사용할 수 있도록 노출할 프로바이더이다.
모듈은 기본적으로 프로바이더를 캡슐화한다. 즉, 현재 모듈에 직접 속하지 않거나 가져온 모듈에서 노출(export)하지 않는 프로바이더를 주입할 수 없다. 따라서 모듈에서 노출한 프로바이더를 모듈의 공용 인터페이스 또는 API로 간주할 수 있다.
'항해99_6기_TIL' 카테고리의 다른 글
항해99 👩💻56일차 TIL/WIL (0) | 2022.05.03 |
---|---|
항해99 👩💻55일차 TIL (0) | 2022.04.30 |
항해99 👩💻53일차 TIL (0) | 2022.04.29 |
항해99 👩💻52일차 TIL (0) | 2022.04.28 |
항해99 👩💻51일차 TIL (0) | 2022.04.26 |