• 执行上下文
    • 译者署名

    执行上下文

    有几种安装 Nest 应用程序的方法。您可以创建一个 Web 应用程序,微服务或只是一个 Nest 执行上下文 。 Nest 上下文是 Nest 容器的一个包装,它包含所有实例化的类。我们可以直接使用应用程序对象从任何导入的模块中获取现有实例。由于这一点,您可以充分利用 Nest 框架的优势,包括 CRON 任务,甚至可以在其上构建 CLI

    为了创建一个 Nest 应用程序上下文,我们使用下面的语法:

    1. async function bootstrap() {
    2. const app = await NestFactory.createApplicationContext(ApplicationModule);
    3. // logic...
    4. }
    5. bootstrap();

    之后,Nest 允许您选择在 Nest 应用程序中注册的任何实例。假设我们在 TasksModule 中有一个 TasksController 。这个类提供了一组我们想从 CRON 任务中调用可用的方法。

    1. const app = await NestFactory.create(ApplicationModule);
    2. const tasksController = app.get(TasksController);

    就是这样。要获取 TasksController 实例,我们必须使用 get() 方法。我们不必遍历整个模块树,get() 方法就像 查询 一样,自动在每个注册模块中搜索实例。但是,如果您更喜欢严格的上下文检查,则可以使用 strict: true 选项对象作为 get() 方法的第二个参数传递给它。然后,您必须通过所有模块从选定的上下文中选取特定的实例。

    1. const app = await NestFactory.create(ApplicationModule);
    2. const tasksController = app.select(TasksModule).get(TasksController, { strict: true });
    get() 检索应用程序上下文中可用的控制器或提供者(包括看守器,过滤器等)的实例。
    select() 浏览模块树,例如,从所选模块中提取特定实例(与启用严格模式一起使用)。

    默认情况下,根模块处于选中状态。要选择任何其他模块,您需要遍历整个模块树(逐步)。

    译者署名

    用户名 头像 职能 签名
    @zuohuadong 执行上下文 - 图1 翻译 专注于 caddy 和 nest,@zuohuadong at Github
    @Drixn 执行上下文 - 图2 翻译 专注于 nginx 和 C++,@Drixn