初识 nest

90 阅读2分钟

如果你是一个前端开发者,那么 node 是一定避免不了,因为 nest 是使用 node 作为后端语言,那么你可以很快上手

如果你是一个后端开发者,那么模块化结构或者 MVC 一定是熟悉的,因为 nest 也使用了 MVC 架构, 那么也可以很快上手

那么什么是 nest ?

什么是 nest

Nest(NestJS)是一个用于构建高效、可扩展的Node.js服务器端应用程序的框架。

它使用渐进式JavaScript,采用TypeScript构建并完全支持TypeScript(但仍然允许开发人员使用纯JavaScript编码),并结合了OOP(面向对象编程)、FP(函数式编程)和FRP(函数式响应式编程)的一个开箱即用框架。

总之一句话,简单又高效,不论你是前端开发者想开发服务端,还是后端开发者想进军node,nest 都是一个不错的选择

启动

要开始,您可以使用Nest CLI构建项目,或者克隆启动项目(两者将产生相同的结果)。

请确保您的操作系统上安装了Node.js(版本>= 16)。

使用cli安装

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

替代方案

git clone https://github.com/nestjs/typescript-starter.git project
cd project
npm install
npm run start

创建完成之后,目录结构如下

image.png

主要聚焦于 src

文件名功能
app.controller.ts一个基本的控制器,只有一个路由。
app.controller.spec.ts控制器的单元测试。
app.module.ts应用程序的根模块。
app.service.ts一个基本的服务与一个单一的方法。
main.ts应用程序的入口文件,它使用核心函数NestFactory创建Nest应用程序实例。

可以使用 npm run dev 或者 npm run start:dev 进行启动, 区别在于 dev 是当你修改文件时不会触发【热更新】,修改文件之后需要再次运行,为了方便开发,使用 热更新

npm run  start:dev

image.png

默认端口是 3000,所以可以打开浏览器并输入 http://localhost:3000/

image.png

ok, 到此为止,一个 nest 服务已经正式启动成功!

更近一步

不需要理解具体代码,( 后面章节会详细讲到 ) 只需要跟着流程走一遍,大致了解

入口文件 main.ts

code.png

引入了 app.module 文件, 并使用函数 bootstrap 启动应用

code.png

app.module 中是暴露出一个名为 AppModule 的一个类,同时在这个类中使用了 AppServieAppController

code.png

code.png

可以看到,在 main.ts 中使用 AppModule 启动,在AppModule 中统一管理了 AppControllerAppService,在 AppController 中可以直接使用 AppService

总结

  1. nest 是一个开箱即用的 node 框架,默认使用 express 作为底层,可以切换为 fastify。使用 MVC 架构,有利于模块化和职责分离

  2. main.ts 作为整个应用的启动入口,引入根模块 AppModule,在模块中又引入了 AppControllerAppService

代码地址