NinghaoNodeCamp 2019:想法
多少次打算学习后端应用开发,最终又放弃了,只是因为学习中遇到了一点点小问题,没能及时得到解决。现在有个机会可以让你用三个月获得一项重量级开发技能,你可以参加宁皓网有史以来的第一次线上训练营:《 Node.js 后端应用开发(2019)》。
为什么做训练营
我一直推荐大家学会自学,这样可以减少依赖,独立完成。不过自学的人都知道,这个过程一定会不断地出现小恶魔,它们都隐藏在细节里。看起来简单的任务,实际操作时你确发现不是那么回事。这些小恶魔会让你极其痛苦,我曾经用几天时间才解决了其中的一个,受尽折磨方可通关。但往往就是因为这一个一个的小恶魔的出现,让你最终放弃了本应该在几年前就能获得的技能,丧失了实施验证百万主意的机会。
宁皓网最近的课程,极大地改善了课程得可完成度,设计课程的时候我会特别注意内容的完整性与连续性。即使这样,我知道你在练习的过程中仍旧会遇到问题,可能是环境问题,或者某个概念你不能完全理解,某个语法你之前没有见过,我鼓励大家不要停下,先坚持完成练习。不过你可能还是会停下来先去解决这些问题,不解决你心里就会很难受。
通过训练营的方式,结伴一起,可以更积极地学习。完成训练营提供的所有训练成为你的责任,因为你交了钱了,不学不练就觉得很浪费,这也会驱使你完成训练。训练营的目标明确,就是获得某个特定的技能,你不会因为不断地切换任务或不停地犹豫而精疲力尽,明确的目标会让你更专注,学习也就会更有效果。在训练营里,不正确的姿势会得到及时纠正,问题能及时得到解决,少走了弯路,减轻了痛苦,也节省了宝贵的时间。
训练内容
打上个月,就开始准备我们的夏季课程,是基于一个重量级的应用开发框架( Nest.js ) 做后端服务接口( RESTful )。Nest.js 是目前上升最快的 Node.js 项目。你可以用它开发网站,为前端应用、移动端应用、还有小程序提供后端服务。学会如何开发应用的后端服务是非常值得做的事情,因为它是所有其它类型应用的基础,学会了这个,你开发出来的前端应用或者移动端应用才是真正能用的东西,不然它们就只是一套漂亮的用户界面。
Node.js 的应用范围覆盖了很多领域,国内的 BAT( 百度、阿里、腾讯 ) 公司在用,国外的公司也在用( 比如 Netflix、Paypal、Uber... ),Uber 在估值 500 亿的时候还在用很早期的 Node.js。参加了我们的训练营以后,哪天早上起来突然想到一个价值百万的点子,你就可以立即动手开发然后拿到市场上去验证了。说不定你也能创造出价值百亿的产品,价值百万也挺不错啊。
我希望通过两百个左右的训练让你掌握基于这套框架开发后端应用的技能,想想都让人兴奋,真的只需要完成两百个视频就能获取一项重量级的开发技能。我把概念与方法都融入到了实际的训练当中,我认为在练习中学习的效果最佳,每个练习的目标都非常明确。目前已经准备好了一百五十个左右的训练,还在不断完善之中。
训练目标
掌握基于 Nest.js( Node.js 应用框架 ) 开发后端应用接口的技能。这个后端接口( RESTful )可以为前端应用、移动端应用或者桌面端的应用提供存储与处理数据的能力。
训练方式
训练营是线上的,每周在宁皓网分发训练内容,你可以选择合适的时间完成训练。然后我们会通过微信、QQ 或在线社区解决遇到的问题,保证完成一周的训练。我会发布一些文字、语音或视频补丁来解决或列出一些特定的问题,作为训练内容的补充与扩展。
训练时间
2019.06/15 —— 2019.06/30
适用人群
- 打算跨个界,去做开发。
- 找份后端应用开发工作。
- 想了解一下用 Node.js 做后端开发。
- 想学会使用 Nest.js 应用框架。
- 不想早起,只想晚睡,要做一名自由职业开发者。
- 前端工程师想学后端开发。
- 移动端开发者想学后端开发。
- 小程序开发者想要学会后端开发。
- 有价值百万的点子,自学开发去实现它。
- 纯粹是再想支持一下宁皓网。
报名要求
因为这是第一次,目前还不知道会遇到什么情况,暂时先不设置具体的报名要求了。训练用的语言是 JavaScript 与 TypeScript,所以你最好有这两门语言的基础。没有这两门语言基础,有其它程序语言的基础也可以。如果之前完全没有任何程序语言基础,也可以挑战一下,不过一定会受点苦了。到是可以先在宁皓网补习点基础知识。在训练营开始之前,我会做一个训练时需要的基础知识清单,只要完成清单中列出的任务就可以了。
报名参加
报名参加第一期,也是宁皓网有史以来的第一次线上训练营:《 Node.js 后端应用开发(2019)》。现在开始接受报名,立即报名参加→
如果你还不是宁皓网的付费会员,前阶段报名还可以赠送宁皓网会员资格(会员资格会在训练营结束停止)。
结语
帮人解决遇到的技术问题的过程是痛苦的,让我冒汗,因为问题都太具体了,存在很多变数。所以不能马上给出答案,真的要解决,就要创建环境来还原问题,这非常耗费时间,所以我从不承诺大家订阅宁皓网包含解答问题的服务。
有两种情况我非常愿意提供帮助,一种是我明确地知道怎么解决这个问题。还有一种情况我也愿意花些时间解决,就是我正在做类似的工作。比如我正在学习 Nest.js 框架,如果你问了一个相关的问题,我不知道答案也愿意花时间研究一下。
打算做这个训练营,首先是想多赚些钱然后带小雪去外面看星星,还有就是想探索一下其它的教学方式。并且我打算写一本关于使用 Node.js 开发应用的文字教材( 训练营的成员可以提前看到这套文字教材 ),正好最近又在做相关的课程,不好好利用这个新鲜劲做点事情就浪费了。
别在囤课了,硬盘是不是快装不下了,囤了价值百万的课程,放在那里不看就一文不值。其实这次训练营并没有什么特别的,最关键的关键就是要提高课程的完成度( 这可能需要有一点外部的推力 ),只有完成的训练才是真正地得到了些什么。
技术栈
语言
- JavaScript
- TypeScript
工具
- VSCode
- Git
- 终端
- Insomnia
应用
- Node.js
- Nest.js
- MySQL
服务
- Docker
训练内容
下面是训练的一条主线(还在完善中...),我们会按这个路线推进,训练营会扫清行进中遇到的各种障碍。
起动
创建 NestJS 项目
源代码管理
命令行工具(@nest_cli)
控制器(Controllers)
路由(Routes)
请求(Request)
专用装饰器:查询参数(@Query)
专用装饰器:头部信息(@Headers)
带参数的路由与参数装饰器(@Param)
请求主体(@Body)
Data Transfer Object(DTO)
核心组件(一)
准备项目
升级 Nest 应用
升级 Nest 命令行工具
服务(Services)
定义服务方法
使用服务
注入依赖的简单形式
模块(Modules)
中间件(Middlewares)
使用中间件
异常(Exception)
异常过滤器(Exception Filter)
绑定异常过滤器
核心组件(二)
管道(Pipes)
内置的数据验证管道(ValidationPipe)
内置的数据转换管道(ParseIntPipe)
守卫(Guards)
绑定守卫
Execution context:获取到请求
全局守卫
Execution context:获取到处理器与类(getHandler、getClass)
反射(Reflection)
使用中间件在请求中添加数据
守卫(按用户角色放行)
自定义装饰器
核心组件(三)
拦截器(Interceptors)
绑定拦截器(处理器方法 _ 控制器类)
绑定拦截器(全局范围)
拦截器:在处理器之前或之后要做的事情
拦截器:转换响应数据
拦截器:转换异常
参数装饰器
自定义路由参数装饰器
理解自定义管道(Pipe)
数据库
准备项目(全新项目)
应用的数据库
准备 MySQL 数据库(基于 Docker Compose)
数据库连接配置
创建模块(Post)
实体(Entity)
实体里的数据栏(Column)
把 TypeORM 配置放在环境变量里(.env)
Git:忽略掉已经跟踪的文件
数据操作
注册实体的 Repository
使用实体的 Repository 存储数据
查询实体全部数据
查询实体单个数据
更新单个实体数据
删除实体数据
创建可为空的实体字段(nullable)
数据传输对象(DTO)
用户
创建模块(User)
用户实体(User Entity)
存储用户
用户名唯一(unique)
自定义创建用户时用户已存在的异常
Hash 用户密码(使用 Listeners 监听器)
查询单个用户数据
在响应里去掉用户密码(@Exclude)
更新用户密码
身份验证
创建身份验证模块(Auth)
在 Auth 模块中使用 User 模块里的服务
定义用户登录接口(auth_login)
安装与配置 JWT 模块(@nestjs_jwt)
签发 JWT(jwtService.sign)
Passport.js
策略(Strategy)
为路由启用验证用户身份(AuthGuard)
验证身份的方法(validate)
验证身份有效就会在请求里包含用户
内容关系
准备项目(内容关系)
VSCode:自定义 TS 的 Decorator 代码的颜色
在 Post 模块中使用 AuthGuard 验证用户身份
一对多 _ 多对一的关系(OneToMany、ManyToOne)
查询内容关系(一对多 _ 多对一)
存储内容关系(多对一)
多对多关系(ManyToMany)
用 ParseIntPipe 把参数值的类型转换成数字
存储内容关系(多对多)基于 Query Builder
删除内容关系(多对多)
查询内容关系(多对多)
定义与查询反向多对多关系
内容分类
准备项目(内容分类)
TablePlus:数据库桌面客户端
导入一组内容与用户数据到应用的数据库里
分类模块(Category)
分类实体
存储分类实体数据
定义分类实体与内容实体的关系
存储分类实体与内容实体的关系
查询指定分类的内容列表
查询多个分类的内容列表
内容标签
标签模块(Tag)
标签实体
处理标签实体数据
定义内容与标签关系(多对多)
创建内容时存储与标签的关系(准备)
创建内容时存储与标签的关系(实施)
更新内容时存储与标签的关系(多对多)
按标签筛选内容列表
评论
准备项目(评论)
评论模块(Comment)
评论实体(Comment)
定义评论与其它实体的关系
存储内容评论
设置在查询时不选择实体的某些字段(select: false)
更新与删除评论
查询内容与用户的评论
在查询中包含隐藏字段(addSelect)
分页与排序
准备项目(分页与排序)
分页(take、skip)
通过查询参数设置页码与每页内容数量
通过装饰器的参数设置默认每页内容数量
查询内容列表时带着结果数量(getManyAndCount)
用拦截器转换响应数据(TransformInterceptor)
排序(orderBy)
通过查询参数设置内容排序
通过装饰器的参数设置内容排序
权限控制
准备项目(权限控制)
用户角色模块(RoleModule)
用户角色实体
用户与用户角色的关系(ManyToMany)
创建用户角色
为用户分配角色
依赖循环
权限控制守卫(AccessGuard)
在请求中的用户属性里添加用户角色列表
权限装饰器(Permissions)
在权限控制守卫检查用户角色
在用户服务添加检查用户是否拥有指定资源的方法(possess)
用权限控制守卫检查用户是否拥有指定资源
文件上传
介绍(文件上传)
准备项目(文件上传)
文件模块(FileModule)
文件上传接口
文件上传配置选项(存储位置:dest)
文件上传配置选项(过滤上传文件:fileFilter)
文件实体(File)
存储上传文件相关数据
传输文件给客户端
立即报名参加 →
图:Uran
评论
很感兴趣~皓哥能再具体讲讲训练营的训练方式吗?和之前的通过视频课程学习有什么区别呢?《Nest.js》课程是只有参加训练营才能看到吗?
5 年 7 个月 以前
在设计视频内容的时候我会做一些假设,假设你知道某些我认为你应该知道的东西,比如某个语法,某个概念等等。这样做是为了减少冗余内容,保持轻快。有个小问题,就是每个人的情况都是不一样的,视频里做的那些假设很可能是 false 的。这就会导致学习过程中的卡壳,往往就是因为这些小磕绊终止了继续学习的热情。我想通过训练营的方式,解决学习中遇到的这些小磕绊,保证课程的完成度。如果你能顺利完成宁皓网任何一个系列课程,我相信都会给你带来很大帮助。这个课程的视频内容并不是训练营成员独享的,会员都会看到。但是我们会在训练营中对内容做一些扩展。
5 年 7 个月 以前
有没有一个详细介绍,比如大纲或者目录什么的,最后做出什么项目,还有就是涉及到哪些技术栈什么的
另外,这个费用四个阶段的上课内容都是一样的吗?越早买越便宜?
5 年 7 个月 以前
嗯,四个阶段的内容是一样的。大纲我在整理一下,然后再单独发个博客之类的做一下介绍。
5 年 7 个月 以前
第一階段的時間有多長啊?
5 年 7 个月 以前
哦,這個階段是報名時間的是吧
5 年 7 个月 以前
不過課程時間是彈性的嗎?還有求一下訓練大綱可以嗎?我目前也在使用nestjs進行自己的項目重構,想了解一下相關的訓練內容決定是否參加
5 年 7 个月 以前
嗯,如果您已经起步使用了 nest.js,那这次训练营对您帮助不大。
5 年 7 个月 以前
有几个问题:
1. 训练营有对 nestjs 中 IOC 还有 DI 的详细讲解吗?
2. 有关于系统日志的讲解吗?
3. 有没有可能直接基于掘金的部分业务进行训练?(这种真实的训练可能才是我们真正开发中可能遇到的问题)
5 年 7 个月 以前
这一次我只想先解决基础问题,第一个可以加到训练内容里。
5 年 7 个月 以前
或许以后我们可以再做一次实战训练。
5 年 7 个月 以前
文章里已经添加了训练内容:)
5 年 7 个月 以前
适应人群类别中,我属于9和10。蠢蠢欲动中!
5 年 7 个月 以前
哈哈,祝早日实施你的百万创意:)
5 年 7 个月 以前
现在有下面三个业务:
* 宁皓网会员
* 训练营
* 创作者计划
问皓哥几个问题:
* 皓哥有计算过自己的年视频产量?
* 自己一个人怎么能保证会员视频的更新?
* 训练营和会员是共享视频,但是训练营多出指导服务?
* 如果训练营视频独有,会员是否没视频可以看了?
5 年 7 个月 以前
不是独有的,不用担心:)
5 年 7 个月 以前
最后有项目实战吗
5 年 7 个月 以前
不是项目实战,这次主要任务是顺利解决后端开发基础,学会 Nest 框架。
5 年 7 个月 以前
也就是说觉得自己能解决小恶魔的买个会员也一样能学对吧
5 年 7 个月 以前
嗯,是的:)
5 年 7 个月 以前
零基础需要补充哪些知识点,是不是需要提前补充一下
5 年 7 个月 以前
是的,假期回来我会提供一份详细的任务清单。
5 年 7 个月 以前
请问现在任务清单出来了吗,我很想报名,但有点怕听不懂
5 年 6 个月 以前
没事,先不用听懂,练就行了,练着练着就会了:) 训练的主线在这篇文章里可以找到,我们会按这个主线来,然后可能会添加一些附注,做更详细的解释。训练营还是以训练为主,通过训练理解与掌握基础工具、概念等等。
5 年 6 个月 以前
课程有效时长是多久呢?以后还能看么?
5 年 7 个月 以前
可以看:)
5 年 7 个月 以前
皓哥, 请问有微服务这块的么. 有的话我想入坑😁
5 年 7 个月 以前
皓哥, 请问有微服务这块的么. 有的话我想入坑😁
5 年 7 个月 以前
哈哈,这个还没确定,你再等等吧。
5 年 7 个月 以前
我想知道皓哥的nodejs框架怎么从adonis转到Nest.js了,这两者有什么区别和优势
5 年 7 个月 以前
用那个都可以:)
5 年 7 个月 以前
什么时候开营,开营前购买
5 年 6 个月 以前
好的,具体日期还没有定下来,到时候再发通知:)
5 年 6 个月 以前
会员可以看,感谢皓哥!
最近看微服务好火,准备把java学一下,是不是摇摆不定啊……
每次看adonis教程都有收获,可能是年纪大记不住了,中间件、trait这些就挺难的,原理啥的都不懂。如果能从底层有个讲解就好了。皓哥好多一句话带过的地方,我都要翻官网文档好久。对比一看,官网文档真是太简陋了。想学深入,感觉无从下手,怎么办!
5 年 6 个月 以前
1、训练营的内容有效期是多久(就是这些资料我能看多长时间)?
2、有没有更详细的一些执行计划和细节?
5 年 6 个月 以前
内容我想可以永久观看比较合理,细节待定:)
5 年 6 个月 以前
可以「永久观看」那就真的很有购买欲望了,迫不及待期待细节公布:)
5 年 6 个月 以前
好,那就这么定了:)
5 年 6 个月 以前
三年前的老会员发来贺电!!!
5 年 6 个月 以前
已经购买;要学学JavaScript和typescript,不知道哪个会好一点?
5 年 6 个月 以前
其实是一个意思,首先要必须会说 JavaScript ,当然 TypeScript 现在也都得了解一下。
5 年 6 个月 以前