Module Reference trong NestJS

Module Reference cung cấp cách để dynamically resolve providers tại runtime. Nó cho phép bạn truy cập và inject providers từ modules khác mà không cần khai báo import tĩnh. Điều này hữu ích cho các use cases phức tạp như circular dependencies hoặc lazy loading.

Khái Niệm Module Reference

Module Reference là một service cho phép bạn:
  • Dynamically resolve providers tại runtime
  • Truy cập providers từ bất kỳ module nào
  • Tránh circular dependencies
  • Lazy load modules và providers

ModuleRef API

get() - Lấy Provider

resolve() - Resolve Provider Asynchronously

create() - Tạo Dynamic Instance

Ví Dụ Module Reference Thực Tế

1. Accessing Providers Dynamically

2. Resolving Circular Dependencies

3. Lazy Loading Modules

4. Dynamic Provider Resolution

5. Factory Pattern with ModuleRef

6. Request-Scoped Providers

7. Module Context Access

8. Conditional Service Resolution

9. Service Registry Pattern

10. Dynamic Service Creation

get() vs resolve()

Best Practices

1. Tránh Overuse của ModuleRef

2. Handle Not Found Cases

3. Use Appropriate Method

4. Type Safety

5. Error Handling

Complete Example

Kết Luận

Module Reference là công cụ mạnh mẽ để:
  • Resolve providers dynamically tại runtime
  • Tránh circular dependencies
  • Implement factory patterns
  • Lazy load providers
  • Create flexible architectures
Sử dụng Module Reference đúng cách giúp bạn:
  • Xây dựng scalable architectures
  • Giảm coupling giữa modules
  • Implement complex patterns
  • Tạo plugin systems
  • Flexible service resolution
  • Advanced dependency management
Tuy nhiên, hãy sử dụng Module Reference một cách cẩn thận - trong hầu hết trường hợp, dependency injection truyền thống là giải pháp tốt hơn!