nestjs 简介
Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。在底层,Nest使用强大的 HTTP Server 框架,如 Express(默认)和 Fastify。Nest 在这些框架之上提供了一定程度的抽象,同时也将其 API 直接暴露给开发人员。这样可以轻松使用每个平台的无数第三方模块。
以上是官网的原话,个人认为最重要的是nestjs提供了IOC、AOP、微服务的架构特性,这与后端的spring框架极其相似,作为一个前端程序员很难接触到这些结构思想,因此想成为一个全栈程序员,学习nestjs无疑是最好的选择。
这里附上nestjs的中文文档地址。
安装
构建nest项目有两种方式,一种是全局安装nestjs/cli,使用cli来构建项目,具体命令如下:
cmd
npm i -g @nestjs/cli
nest new project-name
也可以通过git来安装:
cmd
git clone https://github.com/nestjs/typescript-starter.git project
cd project
npm i
这里比较推荐第一种方式,但这种方式要时不时升级下版本,具体命令如下:
cmd
npm update -g @nest/cli
nest指令
nest为我们提供了很多指令,大大提高了我们开发时的效率,具体的, 我们可以通过 nest -h
查看具体有哪些指令:

nest new|n [options] [name]
命令用来创建一个新的应用,同样可以通过 nest new -h
来查看具体的选项:

--skip-git
:跳过git初始化--skip-install
:跳过npm install
--package-manager
:指定包管理器--language
:指定语言 javascript | typescript, 默认为typescript--strict
:开启ts的严格模式
至于 --collect
的解释,就要先看一下nest generate
命令了。
nest命令除了可以生成整个项目外,也可以生成一些特定的代码,例如controller、service、module等。这就要用到nest generate
命令了。
具体的可以通过 nest generate -h
查看具体的命令和配置项:

例如,生成module文件:
cmd
nest generate module xxx
生成controller文件:
cmd
nest generate controller xxx
等等...
同时也可以生成一个完整的代码。不用一个一个生成:
cmd
nest generate resource xxx
这些代码模版的集合是在 @nestjs/schematics 这个包里定义的。
还记得 nest new
命令有个 --collection
选项么,就是配置这个的。一般不需要配置。
其中还有一个 aplication
的类型, 它用来生成整个项目的结构,除了核心代码,还包括了一些配置项文件:

其实 nest new 的底层就是 nest generate application,只不过 nest new 额外做了 git init 和 npm install 等处理。
此外,它也有很多配置项:
--flat
和--no-flat
:指定是否生成对应目录文件夹

--spec
和--no-spec
:指定是否生成测试文件

-
--skip-import
:指定不在 AppModule 里引入, 这个以后再说 -
--project
:指定生成代码在哪个子项目
nest build
是用来打包项目的,执行该命令可以生成一个dist目录,并在此目录下生成编译后的代码。同样可以查看一下它的配置项:

--wepback
和--tsc
:指定用什么编译,tsc不会打包,webpack会打包为一个js文件--watch
:监听文件变化,自动打包--path
:指定 tsc 配置文件的路径--config
:指定 nest cli 的配置文件,以上配置项也可以在这里配置

nest start
命令用来启动项目,具体的配置项:

其中:
--watch
:监听文件变化--debug
:启动调试的 websocket 服务,用来 debug--exec
:指定用什么来跑,默认是用 node 跑,你也可以切换别的 runtime
其他的和 build 一样,不再赘述。
最后,还有个nest info
命令,是用来查看项目信息的

学好nest指令,是学好nestjs的第一步。