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

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 命令,可以省去很多创建模板代码的时间。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昆吾kw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值