📝前言
以下“nestjs课”指代本课程(即:《nestjs最佳实践》)、“全栈课”指代《TS+AI全栈开发实战》、“3R社区”指代3R自由职业变现社区
本课程现存版于2023年创作完毕,当前处于维护期。由于本课程非常抽象,学习曲线陡峭,适合有丰富经验的其他技术栈同学转TS全栈。如果不是老会员温故,且无特殊需求,建议学习全栈课!
随着时间的推移,2022年出的《Nestjs最佳实践》这套课程中的许多生态和框架已经严重跟不上时代(虽然2023年努力尝试打补丁的方式修复),并且由于其模仿java以企业级开发为核心,这并不符合node.js更擅长于轻量级单体应用的理念,所以越来越与市场需求脱节。但不得不承认的是,在部分高薪远程、外企、海外、初创甚至国企岗位中,仍具有巨大的面试入职优势。
另外,这套课程作为3R教室的起点,具有非常重要且值得纪念的里程碑意义。它曾帮助许许多多的3R会员同学在远程工作、海外工作、外企工作甚至国企工作中求职成功,也曾帮助我们的3R工作室完成了许许多多项目,使工作室辉煌过。虽然此课的技术栈和开发模式可能有点不适合未来的趋势和远程自由职业中的个人创业方向,但其作为js/ts全栈企业级开发的价值始终存在,尤其是远程工作方面非常受用。
但值得注意的是:本课是以Nestjs框架为主,定位于高级node.js后端开发。课程的目标在于增加求职优势,所以绝大部分内容是围绕node.js与ts的核心知识和高级开发技能所开展的。而经过几年的发展,3R教室会员的学习目标变得越来越多样化。有因为纯兴趣爱好想学习的,也有想成为远程个人创业者(独立作品开发/外包项目接单/知识付费等)或创意工作者的同学。许许多多的新3R会员并不都完全以求职为目的。再加上本课程的内容与外部那种点到为止或免费或收费的nestjs课程不大相同,属于源码级别的学习。所以学习曲线非常陡峭和抽象,只适合经验丰富的前端转全栈或者java等老后端转技术栈。为此,除非你的目标纯粹就只是想增加求职优势(部分Node.js岗位要求会nestjs),基础也比较好,那么,推荐学习本课。否则我们更加建议直接放弃本课,而学习全栈课。或者等后续TS开发能力比较成熟后,再根据需要学习本课亦可!
在了解本课程前,请先阅读以下信息
- 本课程以nestjs+typeorm为主的技术栈。虽然浅度学习还是可以比较轻松地掌握,但是和大量外部定位企业级node.js开发的nestjs课程(比如做个案例或按官网文档重复一遍做成视频教程等)那种点到为止或免费或收费的课程不大相同,会大面积深入一些框架和类库本身核心源码的定制、扩展或者涉及到大量服务端生态、底层构建工具开发、命令工具开发、自动化运维和部署等各种基本前后端开发知识之外的东西,学习曲线就会变得非常陡峭。这会造成许多基础差甚至零基础的会员同学长期无法学会的现象。所以只推荐已经有相当经验的python、php、java、.net等后端开发者转node.js技术栈,以及对JS/TS编程掌握非常熟练且拥有一定的node.js后端开发基础的前端开发者转全栈而学习。如果基础较差或零基础,我个人建议先学习全栈课
- 本课程目前在各种生态的版本上会比较老旧,可能会导致课程源码跑不起来的现象。这类现象可以通过询问助教、自行用AI处理升级或者暂时跳过复现以理解为主,全部理解完后等待我们后续的重构版也不失为一种好办法
- 由于现在优秀的开源react中后台面板且前端部分和全栈课有重叠,所以本课程把原本不再涉及react中后台面板开发等相关前端知识,只专注于后端和node.js生态。24年初重构后,已经把原来前端相关内容给砍掉了。如果需要学习前端相关的react等技术,可以学习一下我们的全栈课
本课程的技术栈只适合原本对其他后端技术(例如.net/java/golang等)比较熟练、且对薪资要求较高(例如20-30k左右?),并在求职企业级node.js开发相关远程工作(包括各类坐班)时有需求的老码农学习,并不适合想从事个人创业方向或普通求职的朋友。如果你只想求职10-20k左右薪资的工作以及兼职工作,或者想自己远程创业成为数字创客(比如独立应用开发者、开发一个收费社区运营、外包接单者等),我推荐学习更为轻量级的全栈课(事实上,很多时候,全栈课的react+next.js+hono在求职时,无论坐班还是远程,机会更多,也可能薪资更高)!
🦔准备
首先确认你是以下人员,否则不适合学习本课而建议学习全栈课
- 不喜欢全栈课这种轻量级且AI自动化开发友好的技术,纯粹处于兴趣,热爱古法编程的朋友
- 经验比较丰富的java/php/.net等后端技术栈开发者转node.js或全栈开发
- 经验比较丰富的前端开发者(熟悉ts/vue/react等),至少会自行运维部署,并且会一些简单的node.js框架开发,比如express,koa等,想转真正的TS全栈开发人员
✍️学习
关于社区资源、助教问答等服务的使用方法请查看3R社区页面
本课程目前源码仓库有多个,分别为nestjs-2022、nestjs-2023、monoapp(所有仓库请用你的3R会员登录,否则打开时404错误),但是都已不在维护,不一定完全能跑起来。目前来说,仓库代码可以作为课程文档的补充。等到后续重构升级版推出后,才会有文档和代码的重新匹配。
当前旧版的学习流程如下
- 在学习课程前或学习过程中,如果对技术和变现方向比较模糊,可以预约站长进行“一对一”会议咨询
- 学习课程文档,同时克隆下来上述三个代码仓库
- 在不理解的地方对比仓库学习,以理解为主,不一定要把仓库代码跑起来也不需要复现
- 把文档理解的同时,自己启动一个nestjs项目,并学习完一篇就根据所学到的技能发散思维做个小应用
- 有问题去QQ群问其他群友(本课程已过维护期,没有专门的问答服务),站长如果有时间也会回答。由于3r酷论坛暂时废弃,所以不要去那边发帖提问了
- 学习完课程后,选择一套vue或react的开源后台管理面板和你自己开发的API对接实现一个中后台通用管理系统
- 学习并参考3R工作室的开源项目源码,主要学习其后端nestjs部分
- 最后,学习3R社区中远程工作求职相关内容,并尝试找到一份适合自己的远程工作(或者更好的坐班),踏入远程工作者的行列
工作室的商业项目源码由工作室的开发者(教室长期合作的古早期老会员)开发,绝大部分并不是由站长或者助教开发的。所以,在部署、修改及二开方面我们并不能给予太多的帮助,请自行研究。一些修改后部署的线上效果可以参考miven同学的个人网站
可共享的商业项目源码有五个,我们默认开通了以下项目的源码
- Goflash:一个美国的购物返利网站,使用next.js+antd pro+nestjs开发
- Youni: 一个加拿大的类似校园口袋一样的校园社交移动网站,使用next.js+vben+nestjs开发
- Kuromi:一个加拿大的移民网站,使用next.js+antd pro+nestjs开发
- XiaoWen:一个法国的网络工作室官网(纯静态),使用next.js开发
- Ryzz【默认不开通,有需要联系助教开通】:一个芬兰的仿小红书移动应用,使用react native+antd pro+nestjs开发
如图

📚大纲
由于本课程非常抽象,学习曲线陡峭,适合有丰富经验的其他技术栈同学转TS全栈。如果不是老会员温故,且无特殊需求,建议学习全栈课!
旧课少量内容已佚散,后续重构版会加上去
以下是课程的一些属性信息
| 课程名称 | 《Nestjs最佳实践》 |
|---|---|
| 开更时间 | 2022年7月10日 |
| 创作及服务团队 | 创作和助教:本课程只有站长@pincman自行助教 |
| 学习时长 | 2个月左右(只适合有一定经验的开发者) |
| 课程定位 | nestjs/node.js后端开发 |
| 课程进度 | 现存版已基本更完 |
| 课程目标 | 增加学习者的求职成功率和薪资水平以及TS全栈和node.js后端开发能力 |
| 适合学习者 | 高端远程、外企、海外等岗位的求职者 |
| 学习要求 | 其他技术栈的web后端开发者(如Java、PHP、Python、Golang等)转node.js开发、前端开发者转全栈 |
| 教学模式 | 文档课程+源码+群问答+论坛问答 |
| 源码仓库 | classroom/nestjs2023、classroom/nestjs2022、 classroom/toomejs(该库已弃用,请直接查看@茶汰同学的完善版即可) |
| 涉及知识 | typescript、node.js、nestjs、bun.js、typeorm、class-validator、 class-transformer、mysql、postgresql、yargs jwt+oauth2(passport.js)、rbac(casl.js)、dayjs、sse、websocket、 bullmq、redis、openapi(swagger)、tdd/e2e测试、腾讯云sdk、monorepo等 |


- Node.js开发环境搭建
- Nestjs+Eslint+SWC应用初始化及断点调试
- 装饰器与反射详解
- Nestjs核心概念
- 无懈可击的Linux服务器构建
- 使用Turborepo+pnpm workspaces构建monorepo应用
- 使用Gitea+Drone自建CICD平台
- Nestjs整合Typeorm实现基本的CRUD操作及分页数据查询
- 请求数据的验证和响应数据的序列化
- 数据关联与树形嵌套结构的分类和评论的实现
- 自定义全局的验证管道,拦截器和过滤器
- 自定义数据验证约束及约束中的依赖注入
- 批量操作及软删除(回收站)功能使用
- 数据库与MeiliSearch的全文搜索
- 数据操作代码的抽象化
- 整合bun与pm2实现开发环境与生产环境免编译和自启『兴趣课,可选或略过』
- 自建配置系统实现
- 嵌套路由与Swagger文档实现
- 使用Yargs构建命令行工具
- 生产环境下静默启动以及PM2 API的使用
- 数据迁移功能的实现
- 数据填充命令实现
- 用户模块开发以及使用Passport实现JWT认证和无痛刷新
- 基于CASL的RBAC动态角色及权限系统实现
- 使用BullMQ实现异步验证短信与邮件发送
- WebSocket实现消息广播功能
- 深入node.js进程、子进程、线程和并发处理
- toomejs react后台面板源码分析
- 前后端对接构建完整后台管理系统
