夜猫子的知识栈 夜猫子的知识栈
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夜猫子

前端练习生
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Node基础

  • 《MySQL》学习笔记

  • Midway

  • Nest

    • 开篇词
    • 学习理由
      • 最流行的 Node 企业级框架
      • 学习各种后端中间件
      • 可以找国外的全栈工作,或者接远程外包
      • 可以独立做自己的产品
      • 学习优秀的架构设计
      • 总结
    • nest概念扫盲
    • 快速掌握 nestcli
    • 5种http数据传输方式
    • IoC 解决了什么痛点问题?
    • 如何调试 Nest 项目
    • Provider注入对象
    • 全局模块和生命周期
    • AOP 架构有什么好处?
    • 一网打尽 Nest 全部装饰器
    • Nest如何自定义装饰器
    • Metadata和Reflector
    • ExecutionContext切换上下文
    • Module和Provider的循环依赖处理
    • 如何创建动态模块
    • Nest和Express,fastify
    • Nest的Middleware
    • RxJS和Interceptor
    • 内置Pipe和自定义Pipe
    • ValidationPipe验证post请求参数
    • 如何自定义 Exception Filter
    • 图解串一串 Nest 核心概念
    • 接口如何实现多版本共存
    • Express如何使用multer实现文件上传
    • Nest使用multer实现文件上传
    • 图书管理系统
    • 大文件分片上传
    • 最完美的 OSS 上传方案
    • Nest里如何打印日志
    • 为什么Node里要用Winston打印日志
    • Nest 集成日志框架 Winston
    • 通过Desktop学Docker也太简单了
    • 你的第一个 Dockerfile
  • 其他

  • 服务端
  • Nest
神说要有光
2025-01-10
目录

学习理由

你可能经常听到 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 的已经盈利的项目的服务端代码,感兴趣可以看一下:

https://github.com/apitable/apitable/tree/35b05eb421d31a4e4b68ca0bacb1fb484186f4ea/packages/room-server (opens new window)

那 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 (opens new window)

image.png

image.png

这个:

https://eleduck.com/tposts/Baf0Dy (opens new window)

或者这个:

https://eleduck.com/posts/njfbzD (opens new window)

image.png

还有这个:

https://eleduck.com/posts/XNfBXN (opens new window)

如果你会 React + Nest 技术栈,找个远程全栈工作不也很香么。

# 可以独立做自己的产品

如果你想做一个自己的产品,不管是网站、app、小程序还是游戏等应用,都得配上后端吧,如果你熟悉 js/ts,那 Nest 是最适合的选择了。

比如刚才我们看到这个国外的这个盈利的产品,它就是用 Nest 做的后端:

或者你是大学生,想做一个写在简历里的前端项目,那只写前端就可以了么?

肯定不行呀,你得前后端都搞定,在简历上写一个完整的项目,这时候 Nest 就很合适了。因为如果你是想做前端工作,那用 java 并不咋加分。

# 学习优秀的架构设计

Nest 的架构很优雅,因为它用了不少设计模式。

比如 Nest 并不和 Express 耦合,你可以轻松切换到 Fastify。

就是因为它用了适配器的设计模式:

Nest 本身只依赖 HttpServer 接口,并不和具体的库耦合。

你想换别的 http 处理的库,只要写一个新的适配器就好了。

再比如 Nest 内构建复杂对象很多地方都用到了 builder 的设计模式:

类似这样的设计有很多。

当你把 Nest用熟之后,潜移默化中,你就知道了什么地方用什么模式是最好的,应该怎么设计。无形中就提升了架构设计能力。

# 总结

不管是你想学 Node 框架,学习各种后端中间件,找国外的远程工作或远程外包,独立开发自己的产品,还是想学习优秀的设计,提升架构能力。Nest 都是一个非常好的选择。

心动了么?赶紧上车。

编辑 (opens new window)
上次更新: 2025/5/14 16:47:16
开篇词
nest概念扫盲

← 开篇词 nest概念扫盲→

最近更新
01
IoC 解决了什么痛点问题?
03-10
02
如何调试 Nest 项目
03-10
03
Provider注入对象
03-10
更多文章>
Copyright © 2019-2025 Study | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式