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会帮你注册)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/693493.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CNCF项目全景图介绍

本文首发在个人博客上,欢迎来踩! 云原生计算基金会(CNCF)介绍 CNCF(Cloud Native Computing Foundation)官网链接:https://www.cncf.io/ 官方的介绍如下: 云原生技术有利于各组织在公有云、私有云和混合…

程序猿大战Python——流程控制——if基础语句

三大基本语句 目标:了解三大基本语句有哪些? Python中有三大基本语句,它们支撑起了程序的业务逻辑处理。 三大基本语句有: (1)顺序语句 (2)分支语句 (3)循…

【K8s源码分析(三)】-K8s调度器调度周期介绍

本文首发在个人博客上,欢迎来踩! 本次分析参考的K8s版本是v1.27.0。 K8s的整体调度框架如下图所示。 调度框架顶层函数 K8s调度器调度的核心函数schedulerone在pkg/scheduler/schedule_one.go:62,如下,这里将一些解释写在了注…

LLM大语言模型(十六):最新开源 GLM4-9B 本地部署,带不动,根本带不动

目录 前言 本机环境 GLM4代码库下载 模型文件下载:文件很大 修改为从本地模型文件启动 启动模型cli对话demo 慢,巨慢,一个字一个字的蹦 GPU资源使用情况 GLM3资源使用情况对比 前言 GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 …

Java:110-SpringMVC的底层原理(上篇)

SpringMVC的底层原理 在前面我们学习了SpringMVC的使用(67章博客开始),现在开始说明他的原理(实际上更多的细节只存在67章博客中,这篇博客只是讲一点深度,重复的东西尽量少说明点) MVC 体系结…

探索LLM 在金融领域有哪些潜在应用——通过使用 GPT-4 测试金融工程、市场预测和风险管理等 11 项任务

概述 近年来,用于自然语言理解和生成的人工智能技术在自然语言处理领域取得了突破性进展,OpenAI 的 GPT 和其他大规模语言模型在该领域取得了显著进步。这些模型通过先进的计算能力和算法,展示了处理复杂任务的能力,如理解复杂语…

linux系统——telnet,ssh命令

telent命令用于登录远程主机,监测远程主机端口是否打开,明文传输,安全性较低,后被弃用,改为ssh

盲盒抽卡机小程序的特点,互联网下市场发展前景

近几年,盲盒抽卡成为了年轻人的新宠,也受到了未成年人的喜爱,卡牌的内容更是丰富多样,涵盖了动漫、漫画、影视等,因此吸引了各类消费者和越来越多的创业者。 目前,随着市场的发展,抽卡机小程序…

分布式事务大揭秘:使用MQ实现最终一致性

本文作者:小米,一个热爱技术分享的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米,一个热爱分享技术的29岁程序员,今天我们来聊聊分布式事务中的一种经典实现方式——MQ最终一致性。这是一个在互联网公司中广…

E10:流程主表表单字段值变化触发事件

效果– //window.WeFormSDK.showMessage("这是一个E10的提示", 3, 2); const onClickCreate () > console.log("create"); const onClickSave () > console.log("save"); const onClickCancel () > dialogComponent?.destroy();/…

java 实现导出word 自定义word 使用aspose教程包含图片 for 循环 自定义参数等功能

java 实现导出word 主要有一下几个知识点 1,aspose导入 jar包 和 java编写基础代码下载使用 aspose-words jar包导入 aspose jar 包 使用 maven导入java代码编写 2,if判断 是否显示2,显示指定值3,循环显示List 集合列表 使用 fore…

【ROS2大白话】四、ROS2非常简单的传参方式

系列文章目录 【ROS2大白话】一、ROS2 humble及cartorgrapher安装 【ROS2大白话】二、turtlebot3安装 【ROS2大白话】三、给turtlebot3安装realsense深度相机 【ROS2大白话】四、ROS2非常简单的传参方式 文章目录 系列文章目录前言一、launch文件传参的demo1. 编写launch.py文…

pyspark中使用mysql jdbc报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决

报错信息: py4j.protocol.Py4JJavaError: An error occurred while calling o33.load. : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 我的解决方法: 这个报错就是提示你找不到jar包,所以你需要去下载一个和你mysql版本匹配的j…

什么是突发性耳聋?

72小时内突然发生、原因不明的感音神经性听力损失,至少在相邻的两个频率听力下降≥20dBHL。 特点: 1发生在数分钟、数小时或3天以内的听力下降; 2原因不明; 3多发生于单侧,可伴有耳鸣、耳堵塞感及耳周麻木感&#…

CSS - 说一说什么是脱离文档流

说脱离文档流之前呢,我们得知道什么是文档流吧。人们常说你脱离组织了,脱离大部队了,你连大部队都没有加入,还脱离个啥呀,是吧。 文档流 我们知道HTML中有盒模型,有行内元素,有块元素&#xf…

牛客网刷题 | BC117 逆序输出

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 输入10个整数&…

统计学研硕大数据统计练手11

统计学论文练手作业 题目AI绘图仅供欣赏 题目 2024年的《政府工作报告》中提出“深化大数据、人工智能等研发应用,开展“人工智能+”行动,打造具有国际竞争力的数字产业集群”,请同学们结合自己工作的所在行业或领域谈一谈大数据技术在人工智能时代下的应用现状、存在的问…

人体部位眼耳手腿分类数据集4376张4类别

数据集类型:图像分类用,不可用于目标检测无标注文件 数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):4376 分类类别数:4 类别名称:["Ears","Eyes&quo…

【PL理论】(11) F#:标准库之 Set | 标准库之 Map

💭 写在前面:本章我们将简要的介绍一下 Set 和 Map (非常简要,简要至极) 目录 0x00 标准库之集合(Set) 0x01 标准库之 Map 0x00 标准库之集合(Set) 集合中的元素具有…