A Developing Developer

eager 과 lazy loading 본문

개발 상식

eager 과 lazy loading

H-JJOO 2023. 2. 21. 00:28

Nest.js에서 "eager"는 모듈의 로딩 시점을 의미하는 옵션입니다.

Nest.js는 기본적으로 지연 로딩(lazy loading)을 사용하여 모듈의 로딩을 최소화하고 애플리케이션의 부하를 줄입니다. 이는 필요한 모듈만 로딩하기 때문에 애플리케이션의 시작 속도를 높이는 데 도움이 됩니다.

하지만, 때로는 애플리케이션 시작 시점에 모든 모듈을 로딩해야 할 때도 있습니다. 이때 "eager" 옵션을 사용하면 모든 모듈이 애플리케이션 시작 시점에 로딩됩니다.

예를 들어, 다음과 같이 AppModule에서 "eager" 옵션을 사용하여 모든 모듈을 애플리케이션 시작 시점에 로딩할 수 있습니다.

@Module({
  imports: [
    UsersModule,
    PostsModule,
    CommentsModule,
  ],
  // 모든 모듈을 애플리케이션 시작 시점에 로딩합니다.
  // (지연 로딩이 아닌 즉시 로딩)
  exports: [],
  controllers: [],
  providers: [],
})
export class AppModule {}

이렇게 하면 모든 모듈이 애플리케이션 시작 시점에 로딩되므로, 모든 모듈의 컨트롤러와 프로바이더가 즉시 사용 가능해집니다. 하지만, 이는 모든 모듈을 로딩하기 때문에 애플리케이션 시작 속도가 느려질 수 있으므로, 사용에 유의해야 합니다.

 

※ 프로바이더 (Provider) : 애플리케이션의 기능을 제공하기 위한 클래스 또는 값(Value)을 의미한다. 프로바이더는 클래스, 팩토리, 값 등 다양한 형태가 있으며, Nest.js 의 DI 시스템을 통해 애플리케이션 내에서 사용된다.

 

즉, 프로바이더는 Nest.js 의 DI 시스템을 통해 의존성 주입을 관리하며, 애플리케이션 내에서 필요한 기능을 제공하는데 사용된다.

 

'개발 상식' 카테고리의 다른 글

Scope & Closure  (0) 2023.02.23
TypeORM 에서 'n + 1 problem' 은 어떻게 해결할까?  (0) 2023.02.21
IoC 와 DI  (0) 2023.02.20
JavaScript 에서 this 키워드  (0) 2023.02.20
[Javscript] 호이스팅(Hoisting)  (0) 2022.11.28