返回

Nest.js 实例创建原理和 Provider 解析

前端

Nest.js Provider 的原理

在 Nest.js 中,Provider 是一个类或一个函数,它可以通过注入到其他组件来提供一个服务或一个值。Provider 可以通过多种方式注册到 Nest.js 应用程序中,包括:

  • 在模块的 providers 数组中注册
  • 在组件的构造函数中使用 @Inject() 装饰器
  • 在服务中使用 @Injectable() 装饰器

一旦 Provider 被注册到 Nest.js 应用程序中,它就可以被其他组件注入。这可以通过使用 @Inject() 装饰器来实现。

import { Injectable } from '@nestjs/common';

@Injectable()
export class UserService {
  constructor(@Inject('USER_REPOSITORY') private readonly userRepository: UserRepository) {}

  // ...
}

在上面的例子中,UserService 通过注入 UserRepository 来获得对它的访问。UserRepository 是一个提供对用户数据访问的服务。

Nest.js Provider 的种类

在 Nest.js 中,有三种不同类型的 Provider:

  • 服务: 服务是提供特定功能的组件。它们通常是单例的,这意味着它们只被创建一次,并且可以在整个应用程序中使用。
  • 仓库: 仓库是负责数据访问的组件。它们通常是瞬态的,这意味着它们每次被使用时都会被创建。
  • 组件: 组件是应用程序的构建块。它们可以是控制器、管道、过滤器或任何其他类型的组件。

Nest.js Provider 的使用场景

Provider 可以用于各种各样的场景,包括:

  • 提供对数据库、文件系统或其他资源的访问
  • 执行计算或处理数据
  • 验证数据或执行业务逻辑
  • 渲染视图或响应 HTTP 请求

总结

Provider 是 Nest.js 中一个重要的概念。它们允许你将应用程序的各个部分解耦,并使你的代码更易于测试和维护。

参考