nest入门教程

1.介绍:

Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用的框架。它使用渐进式 JavaScript,构建并完全支持 TypeScript(但仍然允许开发者使用纯 JavaScript 进行编码)并结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数式反应式编程)的元素。对于入门我感觉只要知道他是nodejs的框架就行

2.下载依赖,创建项目

安装全局依赖:
	pnpm add -g @nestjs/cli
创建项目
  nest new test //创建一个名为test的项目
修改执行指令

进入package.json,找到下面这行代码 (其执行指令为 pnpm start:dev)

 "start:dev": "nest start --watch", 

将其改为(其执行指令为 pnpm dev)

   "dev": "nest start --watch",

根据你的习惯而定

3.在项目中创建服务,控制器,模块等

在终端输入 nest,他会展示以下内容,告诉你你可以创建的东西

 注意红色框框里的,他意味每当创建一个东西时都需加上 g

如创建一个服务 nest g s hd -h (意味着该服务的名字为hd,加上 -h 以为查看创建的选项)

 --no-spec 为创建的提供器,控制器等不携带测试案例,具体自己测试吧

这里提一个比较好用的指令

nest g res xxx --no-spec

执行这个命令,能帮你创建一整个模块,意味着提供器,控制器,模块都帮你创建出来,甚至dto都帮你创建出来

4.使用

        控制器负责处理传入请求并向客户端返回响应。

 创建一个控制器
nest g co user --no-spec
import { Controller, Get } from '@nestjs/common';

@Controller('user')
export class CatsController {
  @Get()
  findAll(): string {
    return 'This action returns all user';
  }
}

 @Controller() 为装饰器,他是必须的,我们通过他将user分为一组,仅对user进行增删改查,这样我们就不必为文件中的每个路由重复该部分路径。

@Get() 为HTTP请求方法装饰器,用于告诉 Nest 为 HTTP 请求的特定端点创建处理程序,端点对应于 HTTP 请求方法(在本例中为 GET)和路由路径,处理程序的路由路径通过连接为控制器声明的(可选)前缀和方法装饰器中指定的任何路径来确定,Nest 会将Get/user请求映射到这个处理程序 。 说白了,你请求这个数据的路径需要添加后缀 /user,

例如 :一般nest的端口号为 3000 ,如果@Controller()里面啥也没写,你打开服务后只需在浏览器中输入 localhost:3000就能请求到,但加了user 就的输入 localhost:3000/user

请求对象

我们可以通过将装饰器添加到处理程序的签名来指示 Nest 注入它来访问请求对象。

下面是提供的装饰器列表和它们代表的普通平台特定对象

 就是通过这些装饰器来获取请求对象

nest使用的是ts需要对类型加以限制,所以在使用时最好下载软件包 @types/express

提供器

1.介绍

许多基本的 Nest 类可以被视为提供器 - 服务、存储库、工厂、助手等等,提供器的主要思想是它可以作为依赖注入。我的理解是,服务器用来写函数供控制器使用,以及其他提供器使用

2.创建提供者

nest g s user --no-spec
//user.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class UserService {
    sayHellow(){
        return "你好"
    }
}
//user.controller.ts

import { Controller, Get } from '@nestjs/common';
import { UserService } from './user.service';

@Controller('user')
export class UserController {

    constructor(private userService:UserService){}    //依赖注入
    @Get("user")
    findAll(){
        return this.userService.sayHellow()
    }
}

3.模块

后端提供的服务都是由一个一个模块组合起来的,

创建模块

nest g mo user --no-spec

 对于单个模块,其里面的提供器需注入到providers 控制器需注入到controllers(需要特别注意,不然debug得找很久)

//user.module.ts
import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';

@Module({
    controllers: [UserController],
    providers: [UserService],
 
})
export class UserModule {}

 如果你创建了一个提供器,没有创建对应模块,需要在根模块app.module.ts中注册(一般nest会帮你注册)

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值