(一)NestJS 工程初始化

274 阅读3分钟

示例工程 GitHub 地址

1. 前言

之前工程使用的EggJS,当时在一众NodeJS框架中选择EggJS,因为它是基于KoaJS的,内部概念基本与KoaJS一致,它的制定约定更容易使工程规范,容易用性也非常优秀,并且生态也相对丰富,能够满足业务需求。当是EggJS和NestJS在GitHub上的Star数量可以平分秋色,而现在EggJS基本已经没有更新了。

NestJS却发展很好,对我来NestJS更像是一个专业的后端框架,使用NestJS能够接触到更多的后台的常见概念。渐进式的特点使得NestJS也比较容易使用,也内建很多实用的模块与插件能满足业务需求。加上NestJS也在持续更新中,更能保障我们自己的应用长期的生命力。

以上是对我对NestJS与EggJS浅见。文末有关于NestJS与EggJS的讨论,可作参考。

这个专栏 NestJS,MongoDB,Docker 工程实践 主要是把我使用的NestJS做的事情记录下来,提供实际使用的示例,希望能帮助有需要的朋友尽快上手,减少试错的机会。内容结构如下,每个文章都尽量简洁,设计的框架概念会提供相关资源的连接。如果有写错的地方,大家可以在评论区骂我。

Nest 工程实践.png

2. 工程初始化

2.1 新建工程

工程创建很容易,NestJS 官网有很好的文档First steps,nest 提供了Cli命令快速新建工程,安装

npm i -g @nestjs/cli
nest new your-project-name

创建时做需要做一个选择,即用哪个包管理器。用哪个都无所谓,我选择了yarn。然后就等这个工程自动创建完成

image-20230628143459378.png

image-20230628143946461.png

nest-cli 不只提供创建新工程的方法,还有创建 module,controller,service, guards等很多方法。nest --help 可以看到所支持的命令。更详细的解析在docs.nestjs.com/cli/overvie…,建议大家可以过一遍文档留一个印象,方便后面遇到问题查找解决方法。

image-20230628162543923.png

2.2 工程目录简介

image-20230628144708319.png

初始化工程目录如上图所示,非常简洁。渐进式的特点允许使用者不必掌握框架的所有特性,可以先使用自己想用的功能,让NestJS使用更加容易。这里介绍一下src下的文件

src
 - app.controller.spec.ts  # app controller 的单元测试,nestjs 使用的jest来做单元测试
 - app.controller.ts       # app controller
 - app.module.ts           # app module
 - app.service.ts          # app service
 - main.ts                 # 工程的入口文件,app在这里进行示例话,同时可以在这里配置i运行端口,跨域等。

modulecontrollerservice 是 nestjs 很核心的概念,大家使用学习时可以根据任意教程快速实操上手,但是一定静下心来去看这些文档提及的内容,非常有用。

另外,nestjs框架用到了反转控制依赖注入等概念,如果能了解这两个概念,能容易里面nestjs框架以及在写代码的时候某些代码实际作用。还有了解 TypeScript的装饰器 decorators 的作用与语法会对代码对读写非常有帮助。

关于这里有一片优秀的文章有较详细的图解,能帮助框架大家都NestJS的整体框架有比较全面的认识,推荐阅读 NestJs 模块化组织App结构

相关引用

NestJS vs EggJS

NestJS 探索与实践

为何从eggjs向nestjs转型

Egg.js、Nest.js、Midway.js 的比较

2021年,如果选型一个Node.js的web server框架,你会选择什么?

nest.js和阿里的midway将来谁会更胜一筹呢?

从 Egg.js 到 NestJS,爱码客后端选型之路

控制反转(IoC)与依赖注入(DI)

控制反转(IoC)与依赖注入(DI) - 推荐阅读

简要实现 nestjs 中控制反转和依赖注入