大家好,我是皮鱼。
现在网上有很多播放量巨高的免费编程项目教程,之前我也带大家评测了【瑞吉外卖】、【尚医通】这两个近百万播放的热门项目,很多同学表示挺有收获,但美中不足的是感觉大家都做过。
所以这次我给大家分享一个今年出的、相对较新的项目 —— 硅谷课堂。通过这篇文章,希望能帮大家快速了解和学习这个项目,少走弯路~
介绍
这是一个基于微服务的在线学习平台,包括公众号前台和管理后台。
管理员可以在后台发布视频点播课程和直播信息:
用户可以在公众号查看、购买课程,并了解直播信息:
资料
快速导学视频:https://www.bilibili.com/video/BV1De411L7zG(建议先看这个)
原课程视频地址:https://www.bilibili.com/video/BV13T411372x
技术
这个项目用的技术并不复杂,基本都是学习路线上提到的必学技术:
前端
- Vue 2
- vue-cli 脚手架(包含了 webpack babel)
- axios 请求库
- Vant 组件库
- Eslint 代码校验
- Prettier 代码格式化
- vue-admin-template 管理员模板(某谷好喜欢用这个)
- 微信 js-sdk
后端
微服务:
- Spring Cloud 和 Spring Cloud Alibaba 框架
- Nacos 注册中心
- Spring Cloud Open Feign 远程调用
- Spring Cloud Gateway 微服务网关
- Maven 子父多模块
数据存储层:
- MySQL:存储数据
- MyBatis Plus:数据访问框架
工具库:
- Easy Excel:读写 Excel 文件
- weixin-java-mp:对接微信公众号
- fastjson:json 序列化
- Json Web Token(jjwt):生成 jwt token
- Joda Time:日期时间操作
- httpclient:请求客户端
- Swagger Knife4j 接口文档
技术架构图
下图中,左侧的服务治理部分仅供参考,并没有全部实现。但是可以看到这个项目对接了很多第三方服务:
快速启动项目
请看这个视频:https://www.bilibili.com/video/BV1De411L7zG
项目学习
这是一个侧重后端的项目,也是要从整体理解各微服务模块的作用开始学习。
微服务划分
如下:
- common 项目公共代码
- service_utils 公共服务,如 swagger 接口文档、全局异常处理器、各种工具类等
- model 项目数据模型层(便于公用)
- service 具体的业务逻辑(微服务)
- service_client 服务调用客户端(只提供接口,便于公用)
- service_gateway 微服务网关:负责跨域和请求转发(这个项目没有用到全局登录校验拦截)
- service_vod 视频点播服务:课程管理、课程分类管理、讲师管理、管理员后台登录、视频管理、视频同步
- service_live 直播服务:直播管理、同步直播信息到第三方平台上
- service_order 订单服务:支付订单、订单管理
- service_user 用户服务:微信登录、获取用户信息
- service_wechat 公众号服务:上传文件(上传用户的图片)
- service_activity 活动服务:优惠券信息的管理(增删改查)
功能模块图:
区分接口类型
这个项目的接口比较多,这里给大家讲一下接口类型划分规则,便于大家理解项目。
本项目接口主要分为:内部接口、管理员后台接口、前台接口。
内部接口:接口路径包含 inner 的均为内部接口,其他服务可通过 feign 客户端来调用这些内部接口。
接口实现一般在 service 的 api 目录下,接口定义在 feign 客户端模块下,如图:
管理员后台接口:一般在 controller 目录下,前缀为 /admin。如图:
前台接口:一般在 api 目录下,前缀为 /api。如图:
聊聊代码
这个项目的代码并不复杂,了解各模块功能后就可以逐个击破。
有同学说微服务代码行数就多?其实这是一个错误的认识,我们可以用 IDEA 的 Statistic 插件来看一下这个项目的代码行数,发现也就 8000 多行。且占用最多行的 MTCloud 文件感觉都是直接粘贴的官方 SDK 的代码,如图:
再看看登录接口的代码,会发现他没有做任何校验,并且就是设置了一个固定的 token。如图:
所以如果你想把这个项目直接上线,还是需要不少时间来完善它的。
学习建议
1、跟上次推荐的尚医通微服务项目比起来,这个项目的坑不算太多,还是比较适合入门的,前后端都可以学习。前端建议至少学完 Vue、后端建议至少学完 Spring Boot 再来看这个项目。
2、业务层面:这个项目的业务流程比较完整,值得学习。本质上也是类商城业务,但是在这方面比尚医通的业务流程更完整,包括:信息发布 => 信息展示 => 领优惠券 => 购买 => 下单支付 => 统计管理。
但是代码实现比较简单、不够完整(比如上面提到的登录功能),也不够细节,甚至有些地方是有点水的。但毕竟课程的时间就这么短,也能理解。建议大家做项目的时候不要完全跟着视频他一行你一行,还是要有一些自己的想法。
3、技术层面:项目的重点不在微服务上,只是象征性地用了下微服务,没有服务治理相关的东西,哪怕你事先没学过微服务,也能做这个项目。
但是,项目重点讲解了微信公众号的开发及相关工具,并使用大量的第三方服务如文件上传、直播、点播等,很适合学习第三方服务的接入。
如果你已经做过类似业务的系统,建议只看自己想学的章节,比如学习如何对接第三方直播平台或者公众号开发。