NestJS简介[+6学习资源]
NestJS是一个用于构建可扩展、高效和可靠的服务器端应用程序的逐步式Node.js框架。
NestJS旨在消除混乱的代码库。其模块化结构使得将代码组织到不同模块中变得容易。
NestJS基于TypeScript构建,并在内部使用ExpressJS。NestJS受到希望利用TypeScript的类型检查功能的开发人员的喜爱。NestJS结合了函数响应式编程(FRP)、面向对象编程(OOP)和函数式编程(FP)的不同方面。
为什么选择NestJS?
NestJS对初学者友好,具有良好的结构和易于使用的命令行界面(CLI)工具。使用这个Node.js框架,开发人员可以通过一个命令轻松地构建新的功能。
NestJS提供了模块、服务、控制器和测试工具,以帮助您入门。您还可以依靠众多可用的样板和模板,使您的开发过程更轻松。
对于熟悉JavaScript和Angular中的循环、语法和条件的人来说,学习NestJS的曲线将会很容易。
NestJS的特点
基于TypeScript构建
NestJS基于TypeScript构建,TypeScript是JavaScript的超级脚本语言。与手动检查代码中的错误相比,使用TypeScript可以提供更好的开发体验。TypeScript基本上提供了JavaScript的所有功能,并附带一些附加功能。
依赖注入容器
依赖注入将类使用的对象的初始化与类本身分离。在这种情况下,类被称为“客户端”,类的依赖关系则称为“服务”。NestJS内置的依赖注入使应用程序更高效和模块化。
强大的命令行界面(CLI)
您可以使用Nest CLI初始化、开发和维护所有NestJS应用程序。使用Nest CLI,您可以执行很多操作,例如:
- 搭建项目
- 在开发模式下运行项目
- 构建和打包应用程序进行生产分发
模块化
每个NestJS应用程序至少有一个模块。'根'模块是最基本的模块。在典型的NestJS应用程序中,应用程序的每个逻辑部分将位于同一个域边界(模块)中。这样的设置使得在一个应用程序中可以轻松组织组件,其中一个应用程序将具有具有紧密相关能力的多个模块。
单元测试
自动化测试带来很多好处。然而,设置这样的测试的过程可能更加复杂。NestJS具有各种功能,可以帮助团队构建和执行单元测试。Nest依赖注入系统在测试期间可用于轻松模拟组件。
与数据库无关
使用NestJS时,您可以根据自己的需求和偏好轻松集成任何SQL或NoSQL数据库。将NestJS连接到数据库非常简单,您只需加载适当的Node.js驱动程序。
支持各种库
NestJS与各种工具兼容,加快了应用程序开发。该框架支持日志记录、验证、缓存、WebSockets、TypeORM、Mongoose和GraphQL,无需额外配置。
NestJS的架构和工作流程
NestJS具有包含控制器、提供者和模块的3层架构。开发人员可以创建不重叠的干净代码。
控制器
在NestJS中,控制器充当客户端请求和响应之间的桥梁。无论何时发出HTTP请求,路由机制都会将请求定向到适当的控制器。该框架使用装饰器和类来创建控制器。然后,将每个类方法映射到路由以接收特定的请求。
提供者
提供者可以被描述为NestJS的基础。提供者作为依赖项注入,并在各种对象之间建立关系。在NestJS中,诸如helpers、services或repositories之类的类可以被视为提供者,只要添加了`@Injectable()`装饰器。这些提供者也可以通过构造函数注入到类中,NestJS将解析这些依赖项。
模块
NestJS中的模块将一组密切相关的功能组合在一起。每个NestJS应用程序都有一个用作入口点的根模块。如果您希望拥有有组织且易于阅读的代码,强烈建议使用多个模块。Nest的`@Module()`装饰器定义了一个模块,并提供了与该模块相关的依赖项、控制器和提供者等信息。
使用NestJS入门
确保已安装Node.js和npm。您需要一个运行环境,而Node.js非常适合此设置。您需要版本>= 12,除了v13。您可以通过以下命令检查是否已安装Node.js和npm;
node -v
npm -v
如果两者都已安装,您将获得类似于此的输出
如果没有它们,请通过official page安装它们。幸运的是,Node.js和npm会一起安装。
- 安装Nest CLI。使用以下命令设置CLI和项目;
npm i -g @nestjs/cli
nest new project-name
我们选择项目名称为mynestapp以进行演示。 NestJS让您有机会使用TypeScript或Vanilla JavaScript。选择适合您的内容并按Enter。一旦应用程序被构建,文件结构将被设置,而“src”文件夹将带有几个核心文件,如此屏幕截图所示
- 运行应用程序/您的第一个Hello World
安装完成后,运行以下命令运行开发服务器
cd mynestapp
npm run start
在浏览器上键入http://localhost:3000/,您将看到您的第一个“Hello World”在NestJs上显示
NestJS:优势
- 易学。学习NestJS很容易,特别是如果您来自Angular或对JavaScript有一般的了解。详细的文档也使得掌握使用这个强大框架变得容易。
- 灵活。您可以使用NestJS构建许多东西。您可以使用这个Node.js框架创建MVC应用程序、GraphQL应用程序、RESTful API和Web套接字。
- 拥有数千个模块。社区支持的模块使开发人员能够在创建服务器端应用程序时轻松地组织不同的功能。
- 快速开发和良好的架构。当使用NestJS时,您无需从头开始创建所有内容。然而,同样的框架具有坚实的架构,以便更容易理解您的代码。
NestJS:缺点
- 对于具有TypeScript和Angular背景的人来说并不理想。NestJS从Angular架构中借鉴了很多东西,没有这方面知识的人可能需要时间来理解语法和结构。
- 在某些方面还有所欠缺。NestJS仍然年轻,可能与一些基于Python和GO的成熟框架竞争不利。
使用NestJS的公司
#1. 阿迪达斯
鞋类制造商和设计师阿迪达斯是使用NestJS的公司之一。NestJS的令人惊叹的功能必定吸引了这家鞋类巨头在其后端使用它。
#2. Capgemini
Capgemini是一家法国跨国公司,提供咨询、技术、外包和专业服务。这家公司在其技术栈中使用NestJS。
#3. 罗氏
Roche是一家跨国医药保健公司,拥有两个部门:制药和诊断。罗氏在其主要网站上使用NestJS作为技术栈之一。
学习资源
#1. 从零开始的NestJS
从零开始的NestJS教程教开发人员如何使用TypeScript和Node.js创建和部署企业后端应用程序。该课程教授如何创建API、授权和认证、单元测试Nest应用程序以及与数据库交互的TypeORM等内容。
#2. NestJS完全开发者指南
本课程教开发人员如何使用Nest、TypeScript和TypeORM创建后端API。这本完整指南从设置NestJS应用程序的编码、测试和部署等方面为您提供了所有所需的内容。您还将对NestJS Web框架有一个幕后的了解。
#3. 掌握NestJS
掌握NestJS教开发人员如何使用TypeScript开发企业级Node.js应用程序。该课程教授验证和数据序列化、JWT令牌的工作原理、如何使用NestCLI以及现代数据库抽象等内容。
#4. 在实践中使用NestJs(带有MongoDB)
在实践中使用NestJS教授了关于NestJS的一切,包括模块、控制器、守卫服务、管道和中间件等内容。该课程采用项目为基础的方法,您将在GitHub上编写和托管代码,并为每个部分提供可下载的zip文件。
#5. Nest.js:一种渐进式Node.js框架
本书介绍了NestJS以及如何利用JavaScript和TypeScript。本书以实用的格式设计,确保您可以在很短的时间内设置和运行NestJS应用程序。
预览 | 产品 | 评分 | 价格 | |
---|---|---|---|---|
|
Nest.js: A Progressive Node.js Framework | $24.99 | Buy on Amazon |
#6. 实用的Nest.js:开发干净的MVC Web应用程序
Practical Nest.js这本书采用基于项目的方法创建一个利用各种NestJS功能的在线商店应用程序。书中包含了在创建NestJS应用程序时的短讨论、提示和有用的短语。
预览 | 产品 | 评分 | 价格 | |
---|---|---|---|---|
|
Practical Nest.js: Develop clean MVC web applications | $16.99 | Buy on Amazon |
结论
除了是一个强大的Node.js framework之外,NestJS也是当今最流行的用于服务器端应用程序的Typescript框架之一。它提供的编码最佳实践和标准开发架构使得它吸引了许多希望在构建应用程序时专注于构建业务逻辑的工程师。