서론
- 요즘 바빠서 TIL 에 상세 내용까지 적어줄 순 없을듯함..
- 사이드 프로젝트에 NestJS 와 ReactJS 를 사용할 예정
- 채팅은 만들게 되면 Go 를 통해 만들듯 하다..
- AWS 를 최대한 잘 활용해서 할 예정 => 코쿼 과정에서 한번배우고 회사에서 다시 배우니 확실히 리마인드가 잘됨.
- Platform-express
- Platform-fastify
Controller
Provider
- Provider 는 간단하게 NestIOCContainer 를 이용할 수 있게 해주는 것이다. 즉 공식문서에 의하면, 프로바이더의 주요 기능은 inject dependencies 를 가능하게 해주는 것이다!
Nest 에서 DI 를 하는 방법?
- Nest 에서는 TypeScript 를 권장하므로 Type 에 의한 DI 가 가능하다.
constructor(private catsService: CatsService) {}
- 위는 공식문서의 코드인데, 이렇게 Constructor 에 선언해줄 경우 NestIOCContainer 가 자동으로 Dependency 를 주입시켜 준다.
Scope?
- Provider 는 일반적으로 어플리케이션 라이플과 동기적이다. 어플리케이션이 부트스트랩되면, 모든 디펜던시가 리졸브되고, 모든 프로바이더들은 초기화된다. 어플리케이션이 죽으면 각각의 프로바이더들은 파괴된다. 하지만 프로바이더의 수명을 '요청-기간동안만' 으로 만들수도 있다. (이건 나중에~ 문서를 더봐야한다.)
CustomProvider
- 여러가지 방법이 있는데, 보는데 어렵지는 않으니 공식문서를 보고 공부하길 바란다.
Property Injection
- 해당 Injection 도 가능한데, Nest 는 기본적으로 Constructor Injection 을 권장한다.
Module
- 모듈은 NestJS 에서 적극 권장하는 구조이다. Controller , 혹은 다른 모듈, Provider 등을 가질 수 있으며 이를 이용하면 어플리케이션을 구조화 시킬수 있다. (그래프화?!) 뭐 여튼
- 모듈은 기본적으로 싱글톤 기반으로, 다른 모듈들에 같은 인스턴스를 전달할 수 있다.
- 모듈을 글로벌로 셋팅 할 수 있긴한데, 아마 Container 자체에서 Scope 를 글로벌로 잡는거 같다? 뭐 여튼 이건 권장하지 않는 패턴이라고 한다.
추신
- 잘 정리된 글이 아님.
- 공식문서를 읽는게 더 좋음
- 공식문서를 읽어도 충분히 이해가 잘될것임 ⇒ 이해가 안간다면 기반지식이 부족한것
- 끄적인 글에 불과함. ⇒ 사실 공식문서 이해한걸 TIL 에는 적기 귀찮음
- 다음에 정제된 글로 올릴듯..