本文是《Why You Should Choose NestJS as Your Backend Framework》的翻译,自己翻译水平有限,请勿吐槽,如有错误还请指出(已移除原文中广告部分的内容),Thanks♪(・・)ノ~
Amplication(一个网站)
向你解说为什么你应该挑选NestJS
作为你的后端结构,你将了解到运用NestJS
的优点以及为什么它与Amplication
是那么的符合。
- 快速、能够弹性的处理并发请求
- 简略了解、作业效率高
- 可靠的,具有许多的支撑与文档
当我在Node.js
的国际越挖越深,我遇到NestJS
。它有那么几点立即引起了我的注意:
- 它发展得很快,知名度不断提高,文档也写得很好
- 它依据安稳的技能(
Express.js
、Fastify
) - 支撑
TypeScript
当咱们对NestJS
的团队进行调查后,决议就要跟从它。我将告知你为什么咱们从不后悔做了这个决议。
运用NestJS
这一年来都十分满意,我将跟你分享它几个最具有价值的东西,以及告知你为什么应该考虑一下挑选NestJS
作为你的后端结构。
NestJS是开源的
NestJS
是Github
上面一个具有4万多star的项目。它具有超越300位的活泼贡献者。新的功用、改善、bug的修复以及安全修复都能被快速响应。
感谢其巨大的用户基数,因此有着巨大的插件生态,包和整合包协助咱们节省了许多时刻,让咱们有更好的开发体会。
拥抱TypeScript
NestJS
完全拥抱TypeScript
,而且具有高档编程语言的支撑。开发者能从TypeScript
的功用的获益,包括编辑器的支撑,智能提示以及类型安全。它能帮咱们在构建时就及早发现问题,而不是等到发布上线后,上线后才发现问题这也是JS开发中的痛点。TypeScript
编程更简略让咱们沉溺下去,以及更好的了解。
依据StackOverflow开发者调查报告,TypeScript
的知名度这几年上升得很快。在报告中,它这几年连任最受欢迎和喜欢的技能前三。
假如你现已在运用TypeScript
或许预备项目搬迁,NestJS
无疑是很好的就挑选!
NestJS的约束
为了更好的运用NestJS
,你应该跟从它的习惯和面向对象的思维。虽然这在很大程度上取决于每个人的口味,但我相信这是它最有价值的东西之一。
拥抱NestJS
固执的规范能够让咱们聚集于功用的编写,而较少考虑一些无价值的作业,比如说目录结构、文件命名、变量命名、测验办法等等。运用一个有约束的结构会大大削减那些降低开发者与团队效率的作业。
依据这一电,一切的NestJS
项目看起来都是差不多的,这对咱们的团队协作的成本大大降低。
一个主动生成的NestJS
项目结构:
强大的模块体系
这是NestJS
最受欢迎的功用之一,NestJS
内置的模块体系天然使得每个关注点整齐的分离。
一个规范的NestJS
使用是由多个模块组成的,每个模块只关心他自己的组件(Controllers
、Services
等等),模块可能会依靠于其他模块的功用。
这个机制使得依靠能够注入,这个特别好的功用协助咱们办理咱们的依靠以及在咱们的使用中分享它,而不需求忧虑功用的重复与初始化等等。
你能够了解到更多关于模块的信息:NestJS文档-模块
NestJS的测验
NestJS
的模块体系让咱们测验十分简略,模块的功用应该是单一的(就像订单、用户、商品),还得是可测验的。在NestJS
里,写一个独立的主动测验是很简略的。
NestJS
内置Jest
,Jest
是JS的生态中闻名的测验模块。
当创建一个项目的时候,NestJS
还会创建一些根底的资源,包括单元测验,端对端测验。
或许你现已知道了,当咱们写测验的时候,咱们经常需求mock一些依靠。NestJS
的测验模块现已考虑到这一点,还供给了一些主动mock的功用协助咱们。
NestJS的createMock
函数协助咱们主动mock依靠:
你能够了解更多关于测验的信息:NestJS文档-测验
假如你对NestJS
以及测验很感兴趣,这里有一个很不错的的Github
项目,里面包含测验技巧和各种示例,不如说GraphQL
、gRPC
、REST
。能够了解一下:jmcdo29/testing-nestjs
安全
在咱们今日的软件开发中,安全是最为紧要的作业,一个可靠的安全记载能够协助咱们建立与用户和顾客的信赖。反之,安全的问题最终会对咱们的品牌造成不可拯救的丢失。
当运用NestJS
,这一点没有什么好忧虑的,NestJS
经过简略集成
验证、授权模块、护卫来增强安全。
依据这些,NestJS
帮你办理CORS
和CSRF
(你也能够依据你的需求自行配置)。
天然的,当你想让你的部分路由只对授权用户开放,NestJS
现已为你供给了护卫功用,这样让你能够很轻松完成这个需求。装饰器的运用让这件事变得十分可描述化,这对工程是十分有利的。
POST/product
的终端被NestJS
的AuthGuard
守护着。
比如说,NestJS
与Passport.js完美的集成,这是一个闻名的库,它供给授权,且允许你能轻松的运用类似JWT
的战略(JSON Web Token)。
对通用技能的支撑
衔接数据库?没问题。想要运用GraphQL
的API?很简略。需求消费RabbitMQ
?当然能够。想要从Redis
里获取数据?当然没问题!
NestJS
的成长速度和知名度丰富了包的生态(官方和社区的都有)。
这些包都很简略安装和集成,它们被实现作为NestJS
的模块,这使得咱们能够十分天然的在咱们的项目里集成和运用它们。
这是一个在NestJS
项目里引入GraphQL API
的示例:
假如你想进一步了解的话,这里有一份短小的技能清单:
- GraphQL
- Prisma
- TypeORM
- MongoDB + Mongoose
- Redis
- RabbitMQ
- Kafka
如想了解更多的技能,能够看看NestJS技能里的文档。
优异的文档与友爱的社区
真的,在我看过的文档网站中,NestJS
有许多很不错的文档,这使得咱们能够快速的运用它。
负责人出色的完成了许多作业,比如说全体的介绍、核心概念的解说(经过视觉)、基本原则、通用技能和技巧。
我十分鼓舞你看看Nest文档以及自己体会一下。
社区这一块,NestJS Discord server是一个超越3万活泼用户的社区。我现已在上面发起过屡次的求助,总能获得支撑和了解。
跟着NestJS
的易用性和知名度加强,社区在建造它们的生态方面都很活跃,这是双赢。
总结
NestJS
似乎什么都有,它很快,它也不重复造轮子。它支撑一切闻名的东西、技能、模型。它依据稳健的模型,包括稳健型模块体系、依靠注入和牢记可测验性。NestJS
的使用十分简略易用,而且经过几行代码就能够进行拓展。
NestJS
确实削减了咱们的许多担负,协助咱们提高了作业效率。
原文链接