NestJS 是一个基于 TypeScript 和 Node.js 的后端框架,专为构建高效、可维护和可扩展的服务器端应用程序而设计。
一、背景与起源
- 创立者:NestJS 由 Kamil Mysliwiec 在 2016 年创立,旨在提供一个结构化、模块化的开发环境,以弥补当时 Node.js 生态系统中缺乏的清晰架构模式。
- 设计理念:NestJS 借鉴了 Angular 框架的设计原则,如依赖注入、模块化、组件化等,将其应用到后端开发中,使得开发者能够像构建前端应用那样构建后端服务。
二、核心特性
1、TypeScript 支持:
- NestJS 采用 TypeScript 作为主要编程语言,利用静态类型检查、强大的代码智能感知和更好的代码质量控制,使得代码更易于维护和重构。
- 同时,NestJS 也兼容纯 JavaScript,允许开发者在必要时使用。
2、模块化架构:
- NestJS 使用模块化的设计,将应用程序分割成多个可重用的模块,有助于保持代码的组织结构清晰,便于团队协作,并支持快速开发和测试。
3、依赖注入:
- NestJS 使用依赖注入容器,使得管理依赖关系和组件变得更加容易。这有助于解耦组件,并使代码更容易测试和重用。
4、内置支持:
- NestJS 提供了内置的模块和库,用于处理常见的任务,如 HTTP 请求处理、WebSockets、WebSocket Gateways、身份验证、授权等。
5、可扩展性:
- NestJS 提供了丰富的生态系统,包括中间件、插件、拦截器和自定义装饰器,允许开发者根据需要扩展框架的功能。
6、底层框架:
- NestJS 构建在强大的 HTTP 服务器框架上,如 Express(默认)和 Fastify,但向开发者直接暴露了底层框架的 API,使得开发者可以自由地使用适用于底层平台的第三方模块。
三、优势与应用场景
-
优势:
- 高效开发:NestJS 提供了丰富的工具和抽象层,帮助开发人员快速构建可扩展的、可维护的应用程序。
- 社区和文档:NestJS 拥有活跃的社区和详细的文档,为开发者提供了丰富的学习资源和支持。
- 灵活性与可扩展性:通过模块化架构和依赖注入,NestJS 使得应用程序的组织和拓展变得非常容易。
-
应用场景:
- 微服务架构:NestJS 支持微服务架构,使得大型应用可以被拆分为多个小型、独立的服务,每个服务专注于单一功能,易于开发和维护。
- RESTful API 开发:NestJS 内置了对 RESTful API 的支持,使得构建 API 变得简单而高效。
- 实时通信:借助 WebSocket 和其他实时通信技术,NestJS 可以构建响应式和交互式的应用程序。
四、安装和访问
$ npm i -g @nestjs/cli ## 全局安装脚手架
$ nest new project-name ## 创建项目 project-name 换成你想要的英文名称
$ cd project-name ## 切换到你创建好的项目文件夹中
$ npm run start ## 启动项目
## 在浏览器中输入
http://127.0.0.1:3000
## 就能看到浏览器中输出的信息
五、介绍目录
src
|-- app.controller.spec.ts ## 控制器的单元测试
|-- app.controller.ts ## 具有单一路由的基本控制器。和java中的 controller 类似
|-- app.module.ts ## 应用的根模块
|-- app.service.ts ## 具体业务实现的地方
|-- main.ts ## 使用核心函数 NestFactory 创建 Nest 应用实例的应用入口文件。
六、自动生成代码的工具
在项目的根路径下执行下面的命令,可以帮你生成出简单的 增、删、改、查
的代码。
nest g resource [name]