你可能经常听到 Nest,会觉得它和我的工作也没啥关系呀,为什么要学习 Nest 呢?
这里给出 5 个学习 Nest 的理由:
最流行的 Node 企业级框架
开发 node 应用有 3 个层次:
- 直接用 http、https 包的 createServer api
- 使用 express、koa 这种处理请求响应的库
- 使用 nest、egg、midway 这类企业级框架
直接用 createServer api 创建服务适合特别简单的场景,比如工具提供的开发服务。
express、koa 这种处理请求响应的库并不能约束代码的写法,代码可以写的很随意,所以不适合开发大型项目。
大型项目会用企业级开发框架,也就是规定了代码的写法,对很多功能都有开箱即用的解决方案的框架。
比如 Nest 代码一般都是分了很多模块:
每个模块下都是 controller、service、guard、filter、interceptor、dto 等这些代码:
什么代码放在哪里都是有规范的。
上面这个目录是一个 8.7k 的已经盈利的项目的服务端代码,感兴趣可以看一下:
那 egg 和 midway 呢?
egg 的 ts 支持不行,在当下 ts 这么主流的情况下,已经不合适了。更何况它是阿里的项目,而阿里 egg 团队也被打包裁了。
midway 呢?
star 数差太多了,和 nest 不在一个量级。
而且你能保证它不是下一个 egg 么?
Nest 是在全世界都很火,在国内也越来越流行,找不到啥对手。
如果你想学习 Node 框架,那 Nest 基本是唯一的选择了。
学习各种后端中间件
后端有很多中间件,比如 mysql、redis、rabbitmq、nacos、elasticsearch 等等,学习 Nest 的过程会用到这些中间件。
比如类似这种的后端架构:
所以我们学的并不只是 Nest,而是整个后端生态。
这些东西就算换了 go 或者 java,也是一样要学的。
可以找国外的全栈工作,或者接远程外包
国外远程工作这块,电鸭社区是最有发言权的。
你逛一逛就会发现,很多创业公司都会用 Nest 做服务端:
比如这个:
https://eleduck.com/posts/oQfOD7
这个:
https://eleduck.com/tposts/Baf0Dy
或者这个:
https://eleduck.com/posts/njfbzD
还有这个:
https://eleduck.com/posts/XNfBXN
如果你会 React + Nest 技术栈,找个远程全栈工作不也很香么。
可以独立做自己的产品
如果你想做一个自己的产品,不管是网站、app、小程序还是游戏等应用,都得配上后端吧,如果你熟悉 js/ts,那 Nest 是最适合的选择了。
比如刚才我们看到这个国外的这个盈利的产品,它就是用 Nest 做的后端:
或者你是大学生,想做一个写在简历里的前端项目,那只写前端就可以了么?
肯定不行呀,你得前后端都搞定,在简历上写一个完整的项目,这时候 Nest 就很合适了。因为如果你是想做前端工作,那用 java 并不咋加分。
学习优秀的架构设计
Nest 的架构很优雅,因为它用了不少设计模式。
比如 Nest 并不和 Express 耦合,你可以轻松切换到 Fastify。
就是因为它用了适配器的设计模式:
Nest 本身只依赖 HttpServer 接口,并不和具体的库耦合。
你想换别的 http 处理的库,只要写一个新的适配器就好了。
再比如 Nest 内构建复杂对象很多地方都用到了 builder 的设计模式:
类似这样的设计有很多。
当你把 Nest用熟之后,潜移默化中,你就知道了什么地方用什么模式是最好的,应该怎么设计。无形中就提升了架构设计能力。
总结
不管是你想学 Node 框架,学习各种后端中间件,找国外的远程工作或远程外包,独立开发自己的产品,还是想学习优秀的设计,提升架构能力。Nest 都是一个非常好的选择。
心动了么?赶紧上车。