创建Nestjs项目

安装Nestjs cli:

1
npm i -g @nestjs/cli

创建项目:

1
nest new [项目名称]

启动项目:

1
2
3
4
"start": "nest start",
"start:dev": "nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "node dist/main",

Nest工程目录

main.ts

入口文件、主文件

它通过NestFactory.create(AppModule)创建一个app,使用app.listen(3000)监听一个端口

1
2
3
4
5
6
7
8
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap()

app.module.ts

根模块,用于处理其他类的引用与共享

1
2
3
4
5
6
7
8
9
10
11
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}

app.controller.ts

控制器,控制路由,常用于处理http请求,并调用service层处理方法

1
2
3
4
5
6
7
8
9
10
11
12
13
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();
}
}

app.service.ts

服务层,封装通用的业务逻辑、与数据层的交互(例如数据库)、其他额外的一些三方请求

1
2
3
4
5
6
7
8
import { Injectable } from '@nestjs/common';

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

Nestjs cli常用命令

查看nestjs所有的命令:

1
nest --help

生成controller.ts:

1
nest g co user

生成module.ts:

1
nest g mo user

生成service.ts:

1
nest g s user

直接生成一套CRUD模板:

1
nest g resource xiaoman

初次使用该命令时,除了生成文件,还会使用npm添加依赖,此后就不会了