Nest(2):Nest 应用目录结构和脚手架命令介绍

news2024/12/27 11:37:54

Nest 应用目录结构和脚手架命令介绍

在正式使用 NestJS 进行开发之前,先来了解下 Nest 应用的目录结构,和一些常用的脚本命令。

工程目录

下面是使用 @nest/cli 创建的 Nest 项目的目录结构。

image-20230115144740250

上篇文章中介绍了 src 目录以及目录下各个文件的作用。下面是对其他目录和文件的说明:

目录/文件说明
test 目录存放测试文件
.eslintrc.jsESLint 的配置文件
.gitignore用来配置不需要被 Git 追踪的文件
.prettierrcPrettier 的配置文件
nest-cli.jsonNest 项目的配置文件
package.json记录项目信息,比如依赖项,scripts 命令等
pnpm-lock.yaml记录和锁定安装的依赖的版本信息
tsconfig.build.jsonTypeScript 语法构建时的配置文件
tsconfig.jsonTypeScript 编译器的配置文件,用于设置编译时的一些选项

scripts 命令介绍

打开 package.json 文件,@nest/cli 创建的项目提供了 12 个 scripts 命令,我们需要了解几个最常用的命令,如下:

 "scripts": {
    "build": "nest build",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
  },
  • build:打包适合生产环境的代码。
  • start:开发阶段启动 Nest 应用。使用该命令时,修改代码后需要手动重启服务。
  • start:dev:带有 watch 选项,也就是修改代码后会自动重启服务,所以在开发阶段一般使用此 script。
  • start:prod:它实际上是用 node 命令启动了一个构建产物的入口文件。
  • start:debug:它带了一个 debug 选项,用来做代码调试。

@nestjs/cli 常用命令介绍

@nestjs/cli 是 NestJS 官方提供的一个非常好用的脚手架工具。执行下面的命令,看下 @nestjs/cli 为开发者提供了哪些好用的命令。

nest --help

image-20230113173106756

  • nest new:创建 Nest 项目,已经体验过了。
  • nest build:构建应用,将源码打包为在生产环境使用的代码。
  • nest start:运行应用,在开发阶段使用。
  • nest generate:快速生成一个 Nest 元素。

nest generate

什么是 Mest 元素?前端使用 HTML 元素来构建页面,HTML 元素就是一个一个的标签。Nest 元素也是一样,构成一个 Nest 应用需要用到 Controller 控制器,Service 服务,Module 模块Filter 过滤器Pipe 管道等等,这些东西就是 Nest 的元素。

前一文章中分析 Hello,World 的示例代码,提到了模块,控制器和服务。至于剩下的其他 Nest 元素是什么,有什么含义和作用,会在后面的文章一一揭晓。

命令 nest generate | g 就可以用来生成这些 Nest 元素,它会给出一个模板,开发者就不用自己去手动建立这些基本结构了。

下面看一个示例。

生成用户模块

$ nest g module user
CREATE user/user.module.ts (81 bytes)
UPDATE app.module.ts (309 bytes)

会在 src 目录下创建一个 user 目录和 user.module.ts 模块文件:

image-20230116161619947

生成的用户模块的代码:

import { Module } from '@nestjs/common';
import { UserController } from './user.controller';

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

在生成新的模块时,脚手架工具会自动帮助完成该模块的注册:

// app.module.ts 根模块

import { UserModule } from './user/user.module';

@Module({
  imports: [UserModule],
  controllers: [AppController],
  providers: [AppService],
})

export class AppModule {}

装饰器 @Module 有一个 imports 属性,用来接收其他模块。

生成用户控制器和服务

$ nest g controller user
CREATE user/user.controller.ts (97 bytes)
CREATE user/user.controller.spec.ts (478 bytes)
UPDATE user/user.module.ts (166 bytes)

$ nest g service user
CREATE user/user.service.spec.ts (446 bytes)
UPDATE user/user.module.ts (240 bytes)

会自动寻找 src/user 目录,并完成相关文件的创建。在生成控制器和服务时,会一并生成对应的测试文件。

image-20230116163115929

控制器的代码:

import { Controller } from '@nestjs/common';

@Controller('user')
export class UserController {}

服务的代码:

import { Injectable } from '@nestjs/common';

@Injectable()
export class UserService {}

总结

本文介绍了 Nest 应用的目录结构,重点介绍了几个常用的 scripts 命令,以及 @nest/cli 脚手架提供的 generate 命令,可以省去很多创建模板代码的时间。

感谢阅读,我们下篇文章见。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

胜者打仗,就像高山上决开积水,势不可挡

胜者打仗,就像高山上决开积水,势不可挡 【安志强趣讲《孙子兵法》16讲】 【原文】 是故胜兵先胜而后求战,败兵先战而后求胜。善用兵者,修道而保法,故能为胜败之政。 【注释】 修道:指从各方面修治“先立于不…

罗勇军 →《算法竞赛·快冲300题》每日一题:“超级骑士” ← DFS

【题目来源】http://oj.ecustacm.cn/problem.php?id1810http://oj.ecustacm.cn/viewnews.php?id1023https://www.acwing.com/problem/content/3887/【题目描述】 现在在一个无限大的平面上,给你一个超级骑士。 超级骑士有N种走法,请问这个超级骑士能否…

「我的编程笔记」——记录学习中的代码、函数、概念等

文章目录 每日一句正能量前言常用的代码登录存储 特定函数MD5加密 复杂概念1. 多线程2. 集合类3. 异常处理4 泛型5 反射 特定功能1. 文件操作2. 网络通信3. 图形绘制4. 数据库操作5. 多媒体处理 后记 每日一句正能量 不管昨天、今天、明天,能豁然开朗就是最美好的一…

Hugging News #0821: 新的里程碑:一百万个代码仓库!

每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息&#xff0…

Mysql系列 - 第2天:详解mysql数据类型(重点)

这是mysql系列第2篇文章。 环境:mysql5.7.25,cmd命令中进行演示。 主要内容 介绍mysql中常用的数据类型 mysql类型和java类型对应关系 数据类型选择的一些建议 MySQL的数据类型 主要包括以下五大类 整数类型:bit、bool、tinyint、smal…

「对冲」布局?激光雷达行业大佬「个人投资」4D毫米波雷达

随着高阶智驾从高端车型逐步下沉中低价位市场,核心传感器,尤其是激光雷达和4D成像毫米波雷达的目标市场也在寻求分层和融合。 “激光雷达是在自动驾驶出现后才崭露头角。在这些系统开发的早期阶段,很多公司不惜一切代价使传感器尽可能强大。但…

Profibus在工业通讯中的应用案例

Profibus总线是现代自动化中应用非常广泛的一种标准网络通信方案,它具有高效、可靠、灵活等优势,可以实现设备之间的通信和数据交换。下面我们就来为大家介绍几个Profibus在工业通讯中的应用案例。 Profibus在工业通讯中的应用案例 1、汽车制造 在汽车…

文件四剑客

目录 前言 一、正则表达式 二、grep 三、find 四、sed 五、awk 前言 文件四剑客是指在计算机领域中常用的四个命令行工具,包括awk、find、grep和sed。它们在处理文本文件和搜索文件时非常强大和实用。 1. awk是一种强大的文本处理工具,它允许用户根据指…

【Hugging Face】使用方法和如何挑选一个自己需要的模型

【界面介绍】 【个人主页】 注册之后(国内邮箱免费注册)会有个人主页,用来调试创建自己的模型和数据集 右边是网站中的模型使用趋势,左边: 注册账户后可以提供免费训练模型和数据集的工作台,创建即可&…

算法基础(1):排序和查找算法

1、排序算法 1.1、堆排序(大顶堆)-重点: 参考文章:堆排序1、堆排序二 前置知识: 大顶堆:完全二叉树,且父节点大于左右儿子,左右子树又是大顶堆,依赖数组来实现(vector)第一个节点的父节点&…

接口性能测试 —— Jmeter并发与持续性压测

接口压测的方式: 1、同时并发:设置线程组、执行时间、循环次数,这种方式可以控制接口请求的次数 2、持续压测:设置线程组、循环次数,勾选“永远”,调度器(持续时间),这种…

Git使用篇:MacWindow---Vscode 终端命令行显示分支名和Tab自动补全

###:mac终端美化 https://www.jianshu.com/p/fd457aaee3e7 配置地址 终端改成git // 输入命令,检查是否有/bin/zsh(macOS自带zsh) cat /etc/shells // 修改默认的bash为zsh,重启Terminal chsh -s /bin/zsh// 检查修改结果,显示/bin/zsh即成功. echo $SHELLwindow终…

8年经验之谈 —— 基于jmeter的性能全流程测试

01、做性能测试的步骤 1、服务器性能监控 首先要在对应服务器上面安装性能监控工具,比如linux系统下的服务器,可以选择nmon或者其他的监控工具,然后在jmeter模拟场景跑脚本的时候,同时启动监控工具,这样就可以获得jm…

ChatGLM-6B微调记录

目录 GLM-130B和ChatGLM-6BChatGLM-6B直接部署基于PEFT的LoRA微调ChatGLM-6B GLM-130B和ChatGLM-6B 对于三类主要预训练框架: autoregressive(无条件生成),GPT的训练目标是从左到右的文本生成。autoencoding(语言理解…

每日两题 83删除排序链表的重复元素 82删除排序链表的重复元素||

83 题目 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2] 输出:[1,2]示例 2: 输入:head [1,1,2,3,3] 输出&…

*看门狗各函数讲解

独立看门狗配置步骤 1)取消寄存器写保护,通过函数 HAL_IWDG_Init 实现。 看门狗的喂狗时间(也就是看门狗溢 出时间)的计算方式为: Tout((42^prer) rlr) /32 其中 Tout 为看门狗溢出时间(单位为 ms&#…

Navicat里.sql文件转换到.db文件

1.在桌面创建一个xxx.db文件,在navicat中创建数据库的时候会用到 2.在navicat创建数据库 在 Navicat 的导航栏中,选择 "工具" -> "SQL 文件执行器"。 在 SQL 文件执行器中,单击 "打开" 按钮,选择…

无锡市惠丰电子有限公司采购ZJ-5型叠层压电D33测试仪及相关配套夹具

无锡市惠丰电子有限公司采购ZJ-5型叠层压电D33测试仪及相关配套夹具 无锡市惠丰电子有限公司成立于1998年,是一家专门从事电子陶瓷产品研发,生产,销售,服务于一体的股份制公司,座落于素有鱼米之乡的太湖之滨城市——无…

Wapp群发王,释放全球市场潜力

随着移动互联网的普及,WhatsApp在全球范围内的用户数量持续迅猛增长。据数据显示,截至2022年2月,WhatsApp的月活跃用户数已超过20亿,遍布全球180多个国家和地区,在 58 个国家更成为常用通讯软件。这使得 WhatsApp 成为…

滑块验证3-接第1篇

driver拖动滑块 滑块验证的过程比较常使用driver模拟滑动,这样能够省去很多验证操作。 如果设置适合的滑动轨迹,成功率是非常高的。 当然,麻烦的是现在很多站点都做了识别driver的反爬,而且比较受网络的影响。 所需包 seleniu…