记录学习 nest.js 开发的过程
Windows 10 、mysql v8.0.12、Redis3 v.2.100、node v14.16.1、npm v6.14.12、nestjs v8.1.1
运行以下命令新建 nest 项目 nest-admin-server-template 为项目名
nest new nest-admin-server-template
Which package manager would you ❤️ to use?
此处我们选择自己喜欢的包管理器就好了,本文选择 yarn。
此时 src 生成以下文件,
app.controller.ts | 带有单个路由的基本控制器。 |
---|---|
app.controller.spec.ts | 针对控制器的单元测试 |
app.module.ts | 应用程序的根模块 |
app.service.ts | 具有单一方法的基本服务(service)。 |
main.ts | 应用程序的入口文件 |
根目录下运行以下命令用于本地开发调试,将 watch 文件变化自动重启服务
yarn run start:dev
此时访问http://localhost:3000/
可以看到 Hello World!
可以简单的理解为
controller 负责路由,处理传入的请求,并返回相关响应
service 具体的业务处理
module 将各个模块组织在一起
app.controller.ts
import { Controller, Get, Post } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
// 一个get请求 路径test
@Get('test')
testHello(): string {
return 'test hello';
}
//一个post 请求,路径test
@Post('test')
testPost(): string {
return this.appService.getPost();
}
}
app.service.ts
import { Injectable } from "@nestjs/common";
@Injectable()
export class AppService {
getHello(): string {
return "Hello World!";
}
getPost(): string {
return "getPost!";
}
}
get 请求http://localhost:3000/test
返回 test hello
post 请求http://localhost:3000/test
返回 getPost!
以上我们可以看到 nest 部分路由的能力,其中控制器,Module 中 imports、controllers、providers 可以详见官方文档。
但我觉得,如果有一定的前端开发经验,特别是 angular 开发经验,毕竟 nest.js 的架构深受 Angular 的启发,可以在实践中逐渐理解,而不必拘泥在文档。
nest 强烈推荐使用模块作为组织组件的有效方式。因此,我们不可能所有的路由、业务逻辑等等都在根模块下完成。
对于大多数应用程序而言将采用多个模块,每个模块封装一组密切相关的功能。在后面我们将体现这一点。
使用 nest-cli 提供的指令可以快速创建文件,语法如下:
nest g [文件类型] [文件名] [文件目录(src目录下)]
# 常用命令 --no-spec不要测试用例文件
nest g module/mo user logical --no-spec
nest g service/s user logical
nest g controller/co user logical
为了简单演示,测试用例暂不在考虑范围内,所以不会生成测试文件
下一篇,为了方便多人协作,以及数据库配置等,我们将进行多环境的常量配置