中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

塔城地區(qū)建設(shè)工程信息網(wǎng)站谷歌搜索廣告

塔城地區(qū)建設(shè)工程信息網(wǎng)站,谷歌搜索廣告,拼多多電商代運營可信嗎,南京高淳開展規(guī)模性核酸檢測模塊 模塊就是一個聲明了裝飾器Module()的類。裝飾器Module()提供了元數(shù)據(jù),以便讓Nest組織應(yīng)用程序結(jié)構(gòu)。 每個應(yīng)用程序至少有一個模塊,即根模塊。根模塊是 Nest 用來構(gòu)建應(yīng)用程序圖的起點,應(yīng)用程序圖是 Nest 用來解析模塊和提供者關(guān)系和依賴…

模塊

模塊就是一個聲明了裝飾器@Module()的類。裝飾器@Module()提供了元數(shù)據(jù),以便讓Nest組織應(yīng)用程序結(jié)構(gòu)。

來自靜態(tài)目錄的圖像

每個應(yīng)用程序至少有一個模塊,即根模塊。根模塊是 Nest 用來構(gòu)建應(yīng)用程序圖的起點,應(yīng)用程序圖是 Nest 用來解析模塊和提供者關(guān)系和依賴關(guān)系的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。雖然非常小的應(yīng)用程序理論上可能只有根模塊,但這不是典型情況。我們想強調(diào)的是,強烈建議將模塊作為組織組件的有效方法。因此,對于大多數(shù)應(yīng)用程序,生成的體系結(jié)構(gòu)將使用多個模塊,每個模塊封裝一組密切相關(guān)的功能。

@Module()裝飾器采用單個對象,其屬性描述如下:

providers由 Nest 注入器實例化的提供者,并且可以至少在整個模塊中共享
controllers必須創(chuàng)建的一組控制器
imports導(dǎo)入模塊的列表,這些模塊導(dǎo)出了此模塊中所需提供者
exports由本模塊提供并應(yīng)在其他模塊中可用的提供者的子集。

默認情況下,模塊封裝providers。這意味著無法注入既不是當(dāng)前模塊的直接組成部分,也不是從導(dǎo)入的模塊導(dǎo)出的providers。因此,您可以將模塊中導(dǎo)出的providers視為模塊的公共接口或 API。

功能模塊

CatsControllerCatsService屬于同一應(yīng)用程序域。由于它們密切相關(guān),因此將它們移動到功能模塊中是有意義的。功能模塊只是組織與特定功能相關(guān)的代碼,保持代碼井井有條并建立清晰的邊界。這有助于我們管理復(fù)雜性并使用 SOLID原則進行開發(fā),尤其是隨著應(yīng)用程序或團隊規(guī)模的增長的時候。

為了演示這一點,我們將創(chuàng)建CatsModule。

import { Module } from "@nestjs/common";
import { CatsController } from "./cats.controller";
import { CatsService } from "./cats.service";@Module({controllers: [CatsController],providers: [CatsService],
})
export class CatsModule {}

使用 CLI 創(chuàng)建模塊,只需執(zhí)行$ nest g module cats命令即可。

以上,我們已經(jīng)創(chuàng)建了cats.module.ts文件,并把與這個模塊相關(guān)的所有東西都移到了cats目錄下。我們需要做的最后一件事是將這個模塊導(dǎo)入根模塊 (根模塊AppModule, 已經(jīng)定義在app.module.ts文件內(nèi))。

import { Module } from "@nestjs/common";
import { CatsModule } from "./cats/cats.module";@Module({imports: [CatsModule],
})
export class AppModule {}

目錄結(jié)構(gòu)如下:

src
├──cats
│    ├──dto
│    │   └──create-cat.dto.ts
│    ├──interfaces
│    │     └──cat.interface.ts
│    ├─cats.service.ts
│    ├─cats.controller.ts
│    └──cats.module.ts
├──app.module.ts
└──main.ts

共享模塊

在 Nest 中,默認情況下,模塊是單例的,因此你可以輕松地在多個模塊之間共享同一個提供者實例。

來自靜態(tài)目錄的圖像

實際上,每個模塊都是一個共享模塊,一旦創(chuàng)建就能被任意模塊重復(fù)使用。假設(shè)我們要在幾個模塊之間共享CatsService實例,則需要把CatsService放到模塊CatsModuleexports數(shù)組中,如下所示:

import { Module } from "@nestjs/common";
import { CatsController } from "./cats.controller";
import { CatsService } from "./cats.service";@Module({controllers: [CatsController],providers: [CatsService],exports: [CatsService],
})
export class CatsModule {}

現(xiàn)在,任何導(dǎo)入CatsModule的模塊都可以訪問CatsService,并將與導(dǎo)入CatsModule的所有其他模塊共享相同的實例。

模塊重新導(dǎo)出

如上所示,模塊可以導(dǎo)出其內(nèi)部提供者程序。此外,他們可以重新導(dǎo)出導(dǎo)入的模塊。在下面的示例中,CommonModule既可導(dǎo)入,又從CoreModule導(dǎo)出,使其可用于導(dǎo)入此模塊的其他模塊。

@Module({imports: [CommonModule],exports: [CommonModule],
})
export class CoreModule {}

依賴注入

模塊類也可以注入提供者程序(例如,出于配置目的):

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';@Module({controllers: [CatsController],providers: [CatsService],
})
export class CatsModule {constructor(private catsService: CatsService) {}
}

但是,由于[循環(huán)依賴性],模塊類不能注入到提供者中。

Global modules

如果您必須在任何地方導(dǎo)入同一組模塊,則可能會變得乏味。與 Nest 不同,Angular提供者在全局范圍內(nèi)注冊。定義后,它們隨處可用。但是,Nest 將提供程序封裝在模塊范圍內(nèi)。如果不先導(dǎo)入封裝模塊,則無法在其他地方使用模塊的提供程序。

當(dāng)您想要提供一組開箱即用的提供程序(例如,幫助程序、數(shù)據(jù)庫連接等)時,請使用@Global() 裝飾器使模塊全局化。

import { Module, Global } from "@nestjs/common";
import { CatsController } from "./cats.controller";
import { CatsService } from "./cats.service";@Global()
@Module({controllers: [CatsController],providers: [CatsService],exports: [CatsService],
})
export class CatsModule {}

@Global() 裝飾器使模塊全局可用。全局模塊應(yīng)僅注冊一次,通常由根模塊或核心模塊注冊。在上面的例子中,CatsService提供程序?qū)o處不在,希望注入服務(wù)的模塊不需要在其導(dǎo)入數(shù)組中導(dǎo)入CatsModule

讓所有的模塊都成為全局模塊不是一個好的設(shè)計決策。全局模塊可用于減少必要的樣板數(shù)量。imports 通常是使模塊的 API 可供使用者使用的首選方式。

動態(tài)模塊

Nest 模塊系統(tǒng)包括一個強大的功能,稱為動態(tài)模塊。此功能使您能夠輕松創(chuàng)建可動態(tài)注冊和配置提供程序的可自定義模塊。動態(tài)模塊詳細介紹[點這里(/fundamentals/dynamic-modules)]。在本章中,我們將簡要概述以完成模塊的介紹。

下面是DatabaseModule的動態(tài)模塊定義示例:

import { Module, DynamicModule } from "@nestjs/common";
import { createDatabaseProviders } from "./database.providers";
import { Connection } from "./connection.provider";@Module({providers: [Connection],
})
export class DatabaseModule {static forRoot(entities = [], options?): DynamicModule {const providers = createDatabaseProviders(options, entities);return {module: DatabaseModule,providers: providers,exports: providers,};}
}

forRoot()方法可以同步或異步返回動態(tài)模塊(即通過Promise)。

模塊DatabaseModule在裝飾器@Module()中定義了一個Connection的提供者,但是此模塊的返回值還要看forRoot()方法,它返回了一系列的提供者,例如 repositories。所以,請注意動態(tài)模塊的返回值是擴展了裝飾器@Module()定義,而不是覆蓋。所以模塊DatabaseModule導(dǎo)出的providers,包含兩部分,一部分是靜態(tài)定義的Connection,另外一部分是forRoot()方法動態(tài)生成的 providers。

如果你想注冊一個全局的動態(tài)模塊,設(shè)置global=true即可。

{global: true,module: DatabaseModule,providers: providers,exports: providers,
}

使所有的模塊都成為全局模塊,不是一個好的設(shè)計策略。

可以通過以下方式導(dǎo)入和配置DatabaseModule

import { Module } from "@nestjs/common";
import { DatabaseModule } from "./database/database.module";
import { User } from "./users/entities/user.entity";@Module({imports: [DatabaseModule.forRoot([User])],
})
export class AppModule {}

如果你想反過來重新導(dǎo)出動態(tài)模塊,你可以在exports數(shù)組中省略forRoot()方法調(diào)用:

import { Module } from "@nestjs/common";
import { DatabaseModule } from "./database/database.module";
import { User } from "./users/entities/user.entity";@Module({imports: [DatabaseModule.forRoot([User])],exports: [DatabaseModule],
})
export class AppModule {}

動態(tài)模塊一章更詳細地介紹了本主題,并包含一個工作示例

http://www.risenshineclean.com/news/63225.html

相關(guān)文章:

  • 建個好網(wǎng)站網(wǎng)絡(luò)推廣外包公司
  • 網(wǎng)站導(dǎo)航做多大神馬seo服務(wù)
  • 九九電視劇免費觀看完整版seo搜索培訓(xùn)
  • 大連商城網(wǎng)站建設(shè)百度營銷登錄入口
  • 廣東微信網(wǎng)站制作哪家好西安網(wǎng)站優(yōu)化公司
  • 網(wǎng)頁設(shè)計與制作教程web前端開發(fā)整站優(yōu)化提升排名
  • 平?jīng)鍪凶》亢统青l(xiāng)建設(shè)局網(wǎng)站sem賬戶托管外包
  • 網(wǎng)站登陸驗證怎么用java做拓客最有效方案
  • 網(wǎng)站設(shè)計任務(wù)怎么讓客戶主動找你
  • dw做的網(wǎng)站如何上傳圖片灰色行業(yè)推廣平臺網(wǎng)站
  • 網(wǎng)站開發(fā)要網(wǎng)絡(luò)營銷運營策劃
  • 政府網(wǎng)站數(shù)據(jù)開放 建設(shè)方案網(wǎng)絡(luò)營銷師證書有用嗎
  • 免費信息網(wǎng)站建設(shè)平臺有趣的軟文
  • 保定市城鄉(xiāng)規(guī)劃建設(shè)局網(wǎng)站公司宣傳網(wǎng)頁怎么做
  • 政府網(wǎng)站建設(shè)監(jiān)管力度不夠成都seo達人
  • 杭州網(wǎng)站制作報價推廣網(wǎng)站要注意什么
  • 找合作項目app平臺濟南做seo外包
  • 外包公司做的網(wǎng)站貼吧友情鏈接在哪
  • 專業(yè)做幼兒園網(wǎng)站萬網(wǎng)域名注冊查詢網(wǎng)
  • xxx網(wǎng)站建設(shè)規(guī)劃治療腰椎間盤突出的特效藥
  • 合肥 做網(wǎng)站濟南seo官網(wǎng)優(yōu)化
  • 香港公司如何做國內(nèi)網(wǎng)站的備案小說推廣關(guān)鍵詞怎么弄
  • 重慶旅游景點廈門seo優(yōu)化多少錢
  • 網(wǎng)站頭部導(dǎo)航代碼網(wǎng)站seo優(yōu)化怎么做
  • 美橙網(wǎng)站建設(shè)怎么做推廣一次多少錢
  • 企業(yè)手機網(wǎng)站建設(shè)策劃書百度搜索次數(shù)統(tǒng)計
  • wordpress用戶前端創(chuàng)建相冊關(guān)鍵詞seo公司推薦
  • 買域名后 怎么做網(wǎng)站長沙網(wǎng)
  • 網(wǎng)站建設(shè)費 什么科目鄭州seo網(wǎng)站有優(yōu)化
  • wordpress清新seo服務(wù)包括哪些