本篇以掌握Nestjs框架的基本开发原理和流程为目标,旨在掌握框架本身自带的基本功能,来实现一个带验证,序列化,异常处理等功能的简单CRUD模块
🌒知识点
- 基本掌握Nestjs框架的依赖注入,模块,提供者,生命周期等概念
- 掌握DTO数据验证,响应序列化,异常过滤器等常用功能
- 学会编写一些常用的class-validator验证约束
- 熟练掌握Typeorm以及Nestjs与Typeorm结合开发
- 学会整合Swagger输出Open API文档
本篇从更深入的角度去定制化Nestjs,教大家用Nestjs造一个更适合自己习惯的轮子,从而对Node和TS开发整体有一个直观的体验
魔改框架后可以在编写应用时灵活很多,比如写个Dbutil就可以自动配置多数据库,又比如可以通过约定式配置编写嵌套多版本的Restful API,还可以编写自定义命令等
🌒知识点
- 掌握TS装饰器以及反射元数据的定义和使用
- 编写一些数据库相关的数据验证约束(比如树形表的同级别某字段唯一验证等)
- 学会通过继承并魔改Nestjs源码编写自定义的全局验证器
- 可以编写自定义的配置系统以及核心功能包
- 学会自定义的代码组织方式(比如教程中我把默认的Nestjs应用改成Util+PluginModule模式)
- 掌握编写一些常用的Util仓库(比如数据库,Redis,Restful)
- 利用Yargs结合魔改后的框架可以编写一些自定义CLI命令(比如数据迁移,数据填充等)
从这一季开始我们将进一步学习如何构建一个完善的用户和角色的权鉴插件
🌒知识点
- 掌握如何利用阿里云/腾讯云推送邮件和短信
- 掌握使用消息列队(MQ)的方式异步推送邮件和短信
- 掌握守卫原理以及编写一些用户验证的守卫
- 编写一个完善的用户系统(JWT认证,短信/邮件登录,短信/邮件注册,找回密码,绑定手机和邮箱等)
- 熟练地通过编写装饰器去实现一些常用的功能(比如一个可直接通过配置一键关闭某个控制器的装饰器又或者通过配置来实现Entity的动态关联,多态多对多,以及资源所属判断等)
- 通过WebSockets实现用户的上线,下线以及消息实时推送,消息广播等
- 学会使用云存储来上传文件
- 实现RBAC的权限系统
通过前面的篇章,我们已经熟练地掌握了绝大多数的Nestjs应用开发知识,但是仍然有一些前面教程没涉及到去比较常用的技能和替代方案,在这一季我们就来讲解这些知识
🌒知识点
- 理解请求范围概念以及性能方便的考量
- 完善配置系统,实现配置验证以及通过YAML或数据库来进行动态配置
- 通过适用Vscode进行Debug以及编写Jest测试来提升开发效率与程序的可用性
- 编写一些程序外部的CLI命令(比如使用webpack打包,热更新以及通过stub文件创建util或者plugin等)
- 利用NestCURD进行快速开发
- 学会Graphql替代Restful写API
- 学会Prism.js替代Typeorm进行数据操作
- 使用Mongodb替代关系型数据库
- 使用HTTP客户端开发爬虫
- 微服务应用开发和K8S
- 其它的一些常用功能
- 掌握一些常用的打包工具,比如通过ncc打包成单文件,通过pack打包成二进制等
- 学会一些常用的部署方式,比如通过nginx+pm2反向代理部署,devops自动化CI,CD等
到目前为止我们讲解的内容一直局限于后端范围.但是TS/Node开发后端最大的优势并不在于生态多完善,性能有多高,而在于前后端同构和faas的完美支持这些软实力,这一篇就带童鞋们开始全栈开发之旅
🌒知识点
- 学会把Util,Plugin以及其它的库抽出来做成单独的Monorepo子包
- 学会Lerna.js+yarn+monreopo来组织代码
- 掌握使用Vite+React+Nestjs开发中后台
- 掌握Next.js+Nestjs开发SSR同构应用
- 整合腾讯云Cloudbase+Nestjs开发Faas应用
- 整合Nestjs与微信SDK开发微信平台应用
- 第三方社会化登录以及统一支付接口开发等