본문 바로가기

nest3

NestJS - Decorator를 활용한 Discord봇 개발환경 개선 IT동아리 Mash-up에서 서버팀 사이드 프로젝트로 Nest를 사용해 Discord 봇을 만들고 있었습니다. 디스코드 봇에 내릴 수 있는 커맨드들을 정의하고 그에 대한 응답을 보내주는 로직을 작성하는데, 이런 커맨드 하나를 추가하기 위해 최소 4개의 파일을 수정해야하는 상황이였습니다. 아래는 각 파일의 수정이 필요한 부분들입니다. 1. 커맨드들에 대한 정보를 정의해야했습니다. 2. 각 커맨드들에 대한 응답을 매핑해서 리턴해주는 Factory Provider에서 각각의 Reply Provider 들을 주입받아 처리했어야했습니다. 3. Nest의 DI를 사용하기 위해 Module에 각 Reply Provider들을 넣어주어야 했습니다. 4. 각 응답에 대한 Reply Provider 파일을 작성해야했습니다.. 2023. 3. 16.
NestJS Provider(프로바이더) Providers Service, Repository, Factory, Helper 등등, 대부분의 Nest클래스는 프로바이더로 취급 가능하다. 프로바이더는 Nest에서 종속성 주입(Dependency Injection)이 가능한데, 이로 인해 Nest에서는 다양한 관계를 지닌 객체 인스턴스의 연결을 Nest의 런타임 시스템에 위임할 수 있다. Nest에는 프로바이더 간의 관계를 담당하는 내장 IoC(Inversion of Control)컨테이너가 존재하는데 @Injectable 데코레이터를 사용하여 Nest IoC 컨테이너에서 관리할 수 있는 클래스임을 선언하는 메타데이터를 첨부할 수 있다. Nest는 기본적으로 싱글톤 패턴을 따르는 프레임워크이다. Nest는 Bootstrap될 때 Module에 등록.. 2021. 8. 19.
NestJS Lazy-loading Modules 간단 소개 Nest 버전 8에서 나온 최신 방법! 7미만이면 LazyModuleLoader를 불러오지도 못한다.. lazyModuleLoader를 찾을 수 없다면 NestCLI의 버전을 체크하고 업데이트 해주길 바란다! 기존의 Module Load → Bootstrap과 동시에 모든 모듈 로드 Lazy-loading Modules 기법 → 필요한 모듈만 로드하여 부트스트랩 시간 단축 사용 방법 // cats.service.ts @Injectable() export class CatsService { constructor(private lazyModuleLoader: LazyModuleLoader) {} } Or // main.ts import { LazyModuleLoader, NestFactory } .. 2021. 8. 8.