当前位置: 首页 > 工具软件 > nest-angular > 使用案例 >

【nest.js_01】nest.js初识-项目初始化

萧星火
2023-12-01

记录学习 nest.js 开发的过程

演示环境

Windows 10 、mysql v8.0.12、Redis3 v.2.100、node v14.16.1、npm v6.14.12、nestjs v8.1.1

链接

  1. node 下载安装地址 直接下载稳定版
  2. nest.js 中文文档地址 文档参考

Nest CLI 安装

新建项目

运行以下命令新建 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

为了简单演示,测试用例暂不在考虑范围内,所以不会生成测试文件

下一篇,为了方便多人协作,以及数据库配置等,我们将进行多环境的常量配置

 类似资料: