1. 前言
之前工程使用的EggJS,当时在一众NodeJS框架中选择EggJS,因为它是基于KoaJS的,内部概念基本与KoaJS一致,它的制定约定更容易使工程规范,容易用性也非常优秀,并且生态也相对丰富,能够满足业务需求。当是EggJS和NestJS在GitHub上的Star数量可以平分秋色,而现在EggJS基本已经没有更新了。
NestJS却发展很好,对我来NestJS更像是一个专业的后端框架,使用NestJS能够接触到更多的后台的常见概念。渐进式的特点使得NestJS也比较容易使用,也内建很多实用的模块与插件能满足业务需求。加上NestJS也在持续更新中,更能保障我们自己的应用长期的生命力。
以上是对我对NestJS与EggJS浅见。文末有关于NestJS与EggJS的讨论,可作参考。
这个专栏 NestJS,MongoDB,Docker 工程实践 主要是把我使用的NestJS做的事情记录下来,提供实际使用的示例,希望能帮助有需要的朋友尽快上手,减少试错的机会。内容结构如下,每个文章都尽量简洁,设计的框架概念会提供相关资源的连接。如果有写错的地方,大家可以在评论区骂我。
2. 工程初始化
2.1 新建工程
工程创建很容易,NestJS 官网有很好的文档First steps,nest 提供了Cli命令快速新建工程,安装
npm i -g @nestjs/cli
nest new your-project-name
创建时做需要做一个选择,即用哪个包管理器。用哪个都无所谓,我选择了yarn。然后就等这个工程自动创建完成
nest-cli 不只提供创建新工程的方法,还有创建 module,controller,service, guards等很多方法。nest --help
可以看到所支持的命令。更详细的解析在docs.nestjs.com/cli/overvie…,建议大家可以过一遍文档留一个印象,方便后面遇到问题查找解决方法。
2.2 工程目录简介
初始化工程目录如上图所示,非常简洁。渐进式的特点允许使用者不必掌握框架的所有特性,可以先使用自己想用的功能,让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运行端口,跨域等。
module、controller、service 是 nestjs 很核心的概念,大家使用学习时可以根据任意教程快速实操上手,但是一定静下心来去看这些文档提及的内容,非常有用。
另外,nestjs框架用到了反转控制与依赖注入等概念,如果能了解这两个概念,能容易里面nestjs框架以及在写代码的时候某些代码实际作用。还有了解 TypeScript
的装饰器 decorators 的作用与语法会对代码对读写非常有帮助。
关于这里有一片优秀的文章有较详细的图解,能帮助框架大家都NestJS的整体框架有比较全面的认识,推荐阅读 NestJs 模块化组织App结构
相关引用
NestJS vs EggJS
2021年,如果选型一个Node.js的web server框架,你会选择什么?
控制反转(IoC)与依赖注入(DI)
控制反转(IoC)与依赖注入(DI) - 推荐阅读