复位新创建一个nest新项目

lxf2023-03-17 10:20:01

复位新创建一个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 // 开发设计代码文档
│   ├── app.controller.spec.ts
│   ├── app.controller.ts // 控制板路由
│   ├── app.module.ts // 控制模块文档
│   ├── app.service.ts // 服务项目文档
│   └── main.ts // 通道主文件
├── tsconfig.build.json
├── tsconfig.json
└── yarn.lock

运行nest服务项目

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中基础概念

nest控制板

什么叫控制板,控制板负责处理传到请求和向手机客户端回到回应

复位新创建一个nest新项目

控制板的目的在于接受运用的特殊要求。路由器体制操纵哪一个控制器接收什么要求。一般,每一个控制板有好几个路由器,不同的路由能够运行不一样的操作。

为了能创建一个最基本的控制板,我们使用类及装饰器。装饰器将类与所需要的数据库密切相关,从而使 Nest 可以建立路由器投射(将要求关联到对应的控制板)。

新创建一个控制板

// 建立控制板 hello
nest g controller hello 

or

nest g co hello

nest服务项目

服务项目能是service还可以是provider,都能通过constructor引入依存关系。服务项目本质上是一个@Injectable()装饰器注释的类,等同于mvc里的model层

复位新创建一个nest新项目

新创建一个服务项目

// 建立服务项目 hello
nest g service hello

or

nest g s hello

nest控制模块

控制模块是有着 @Module() 装饰器的类。 @Module() 装饰器带来了数据库,Nest 用它机构应用软件构造,每一个 Nest 应用软件至少有一个控制模块,即根控制模块。根控制模块是 Nest 逐渐分配应用软件树地区。实际上,根控制模块有可能是应用软件中唯一的控制模块,尤其是当应用软件很钟头,但对于大中型程序流程而言这没有任何意义。在大多数情况下,你将拥有多个控制模块,各个控制模块都是有一组紧密相关的作用。

@module() 装饰器接纳一个叙述控制模块属性目标:

  • providers 由 Nest 注入器创建对象的服务提供者,并可以起码在全部模块中分享
  • controllers 务必建立的一组控制板
  • imports 导进模块目录,这种控制模块导出来了此模块中需要服务提供者
  • exports 由本控制模块给予并需在别的模块中可利用的服务提供者的子集合

复位新创建一个nest新项目

新创建一个控制模块

// 建立控制模块 hello
nest g module hello

or

nest g mo hello

每一个控制模块都是一个分享控制模块。一旦建立就会被随意控制模块多次重复使用。

立即生成一个程序模块的编码网络资源

// 创建一个程序模块网络资源
nest g resource hello

or 

nest g res hello

nest的架构和编码排列方式

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来创建一个应用案例,案例中根据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装饰器变成一个控制模块,全部应用软件就是这个样子一个一个的控制模块所组成的,随后一个控制模块又由一个个的服务和控制板构成,nest的代码基础构成方法就是这个样子,随后去看看控制板与服务

控制板

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();
  }
}

服务项目

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

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}