前言
上一章我们把后台管理系统的前端搭建完成,此章节我们用nestjs完成后端的搭建。
初始化项目
-
全局安装@nestjs/cli
npm i -g @nestjs/cli -
创建项目
nest new wy-blog-nest然后我选择 pnpm 安装项目
-
启动项目
pnpm start:dev项目启动成功。
-
项目初始化目录
初始化项目结构如下:
然后,我们可以按照上一章需要安装lint-staged 和 husky等。
初始nestjs
-
main.ts
main.ts是项目的入口文件,我们从这里看起:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(process.env.PORT ?? 3000);
}
bootstrap();
这里我使用CodeGeeX帮我解析这段的含义:
这里我们主要需要知道NestFactory、AppModule。
-
模块
我们查看
app.module.ts根模块代码:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
模块是用 @Module() 装饰器注释的类。它主要包含四个属性:
要使用 CLI 创建模块,只需执行
$ nest g module user命令即可。
-
控制器
我们查看
app.controller.ts代码: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(); } }控制器负责处理传入请求并向客户端返回响应。
这里
@Controller()没有指定路由前缀,我们访问http://localhost:3000/ 得到结果,现在我们修改为@Controller('app'),刷新页面404了:这是因为我们加了路由前缀app,我们访问http://localhost:3000/app
getHello()之前的@Get()是HTTP 请求方法装饰器。@Controller()和@Get()组成路由路径。这是什么意思?我们接着修改
@Get()为@Get('getHello'),这时候我们访问http://localhost:3000/app/getHello 才能得到结果。对于其他配置可以看官网进行学习 nest.nodejs.cn/controllers 。
要使用 CLI 创建控制器,只需执行
$ nest g controller [name]命令即可。 -
提供器
nest.nodejs.cn/providers 查看官网了解提供器,这里我们拿服务学习
app.service.ts。要使用 CLI 创建服务,只需执行
$ nest g service cats命令即可
总结
这节我们初始化了项目,了解了nestjs中的模块、控制器和服务,下节我们开始实战以user为例开始开发。