Nest.js系列學(xué)習(xí)之初識nest項目框架及服務(wù)
初始化新建一個nest項目
// 全局安裝nestjs腳手架 npm i -g @nestjs/cli // 使用腳手架新建項目 nest new project-name
文件目錄
. ├── README.md // 說明文件 ├── dist // 打包生成的文件 │ ├── app.controller.d.ts │ ├── app.controller.js │ ├── app.controller.js.map │ ├── app.module.d.ts │ ├── app.module.js │ ├── app.module.js.map │ ├── app.service.d.ts │ ├── app.service.js │ ├── app.service.js.map │ ├── common │ ├── main.d.ts │ ├── main.js │ ├── main.js.map │ ├── modules │ └── tsconfig.build.tsbuildinfo ├── nest-cli.json // nestjs配置文件 ├── package.json // npm 包文件 ├── src // 開發(fā)源碼文件 │ ├── app.controller.spec.ts │ ├── app.controller.ts // 控制器路由 │ ├── app.module.ts // 模塊文件 │ ├── app.service.ts // 服務(wù)文件 │ └── main.ts // 入口主文件 ├── tsconfig.build.json ├── tsconfig.json └── yarn.lock
啟動nest服務(wù)
yarn start:dev
or
npm run start:dev
[10:01:56 PM] Starting compilation in watch mode...
[10:01:58 PM] Found 0 errors. Watching for file changes.
[Nest] 36861 - 01/31/2023, 10:01:59 PM [NestFactory] Starting Nest application...
[Nest] 36861 - 01/31/2023, 10:01:59 PM [InstanceLoader] AppModule dependencies initialized +15ms
[Nest] 36861 - 01/31/2023, 10:01:59 PM [RoutesResolver] AppController {}: +8ms
[Nest] 36861 - 01/31/2023, 10:01:59 PM [RouterExplorer] Mapped {, GET} route +3ms
[Nest] 36861 - 01/31/2023, 10:01:59 PM [NestApplication] Nest application successfully started +2ms
默認啟動的地址是http://localhost:3000頁面上會顯示默認的demo hello word
nest中基礎(chǔ)概念
nest控制器
什么是控制器,控制器負責(zé)處理傳入的請求和向客戶端返回響應(yīng)

控制器的目的是接收應(yīng)用的特定請求。路由機制控制哪個控制器接收哪些請求。通常,每個控制器有多個路由,不同的路由可以執(zhí)行不同的操作。
為了創(chuàng)建一個基本的控制器,我們使用類和裝飾器。裝飾器將類與所需的元數(shù)據(jù)相關(guān)聯(lián),并使 Nest 能夠創(chuàng)建路由映射(將請求綁定到相應(yīng)的控制器)。
新建一個控制器
// 創(chuàng)建控制器 hello nest g controller hello or nest g co hello
nest服務(wù)
服務(wù)可以是service也可以是provider,都可以通過constructor注入依賴關(guān)系。服務(wù)本質(zhì)上是一個@Injectable()裝飾器注解的類,相當(dāng)于mvc中的model層

新建一個服務(wù)
// 創(chuàng)建服務(wù) hello nest g service hello or nest g s hello
nest模塊
模塊是具有 @Module() 裝飾器的類。 @Module() 裝飾器提供了元數(shù)據(jù),Nest 用它來組織應(yīng)用程序結(jié)構(gòu),每個 Nest 應(yīng)用程序至少有一個模塊,即根模塊。根模塊是 Nest 開始安排應(yīng)用程序樹的地方。事實上,根模塊可能是應(yīng)用程序中唯一的模塊,特別是當(dāng)應(yīng)用程序很小時,但是對于大型程序來說這是沒有意義的。在大多數(shù)情況下,您將擁有多個模塊,每個模塊都有一組緊密相關(guān)的功能。
@module() 裝飾器接受一個描述模塊屬性的對象:
providers 由 Nest 注入器實例化的提供者,并且可以至少在整個模塊中共享
controllers 必須創(chuàng)建的一組控制器
imports 導(dǎo)入模塊的列表,這些模塊導(dǎo)出了此模塊中所需提供者
exports 由本模塊提供并應(yīng)在其他模塊中可用的提供者的子集

新建一個模塊
// 創(chuàng)建模塊 hello nest g module hello or nest g mo hello
每個模塊都是一個共享模塊。一旦創(chuàng)建就能被任意模塊重復(fù)使用。
直接生成一個功能模塊的代碼資源
// 創(chuàng)建一個功能模塊資源 nest g resource hello or nest g res hello
nest的架構(gòu)和代碼組合方式
nest的代碼是以模塊化的方式組合的,每一塊的功能都可以定義成一個模塊,先從程序的入口文件main.ts入手
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
通過代碼可以看出,通過NestFactory來創(chuàng)建一個應(yīng)用實例,實例中基于AppModule,然后app運行在3000端口洗,在看下這個模塊是什么
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
AppModule類通過@Module裝飾器變成一個模塊,整個應(yīng)用程序就是這樣的一個一個的模塊組成的,然后一個模塊又由一個個的服務(wù)和控制器組成,nest的代碼基礎(chǔ)組成方式就是這樣的,然后在去看下控制器和服務(wù)
控制器
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
服務(wù)
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}以上就是Nest.js系列學(xué)習(xí)之初識nest項目框架及服務(wù)的詳細內(nèi)容,更多關(guān)于Nest.js 項目框架服務(wù)的資料請關(guān)注腳本之家其它相關(guān)文章!
以上就是Nest.js系列學(xué)習(xí)之初識nest項目框架及服務(wù)的詳細內(nèi)容,更多關(guān)于Nest.js 項目框架服務(wù)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Nodejs Playwright 2Captcha 驗證碼識別實現(xiàn)自動登陸功能
日常工作當(dāng)中,為了提高工作效率,我們可能會寫腳本來自動執(zhí)行任務(wù),有些網(wǎng)站因為需要用戶登陸,所以腳本的自動登陸功能必不可少,這篇文章主要介紹了Nodejs Playwright 2Captcha 驗證碼識別實現(xiàn)自動登陸功能,需要的朋友可以參考下2024-05-05
node.js監(jiān)聽文件變化的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于node.js監(jiān)聽文件變化的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
node.js調(diào)用腳本(python/shell)和系統(tǒng)命令
這篇文章介紹了node.js調(diào)用腳本(python/shell)和系統(tǒng)命令的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
Node.js實現(xiàn)用戶評論社區(qū)功能(體驗前后端開發(fā)的樂趣)
這篇文章主要介紹了Node.js實現(xiàn)用戶評論社區(qū)(體驗前后端開發(fā)的樂趣) ,需要的朋友可以參考下2019-05-05

