这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
- 从用例分析一步步拆解实现,主要涉及21功能点,用户浏览消费,涉及页面的展示,包括话题内容和回帖的列表,其实从图中我们应该会抽出2个实体的,而实体的属性有哪些,他们之间的联系又如何?可以先定义一下结构体,Er图,用来描述现实世界的概念模型。 有了模型实体,属性以及之间的联系,对我们后续做开发就提供了比较清晰的思路。回到需求。两个个实体主要包括,实体的属性,实体的联系;有了实体模型,下一步就是思考代码结构设计。我们采用典型的分层结构设计,
- 整体分为三层,repository数据层,service逻辑层,controoler视图层,
- 数据层关联底层数据模型,也就是这里的model,封装外部数据的增删改查,我们的数据存储在本地文件,通过文件操作拉取话题,帖子数据;数据层面向逻辑层,对service层透明,屏蔽下游数据差异,也就是不管下游是文件,还是数据库,还是微服务等,对service层的接口模型是不变的。
- Servcie逻辑层处理核心业务逻辑,计算打包业务实体entiy,对应我们的需求,就是话题页面,包括话题和回帖列表,并上送给视图层;
- Controller视图层负责处理和外部的交互逻辑,以view视图的形式返回给客户端,对于我们需求,我们封装json格式化的请求结果,api形式访问就好,
- 下面介绍下开发涉及的基础组件和工具,首先是gin,高性能开源的go web框架,我们基于gin 搭建web服务器,在课程手册应该提到了,这里我们只是简单的使用,主要涉及路由分发,不会涉及其他复杂的概念。
- 因为我们引入了web框架,所以就涉及go module依赖管理,如前面依赖管理课程内容讲解,我们首先通过go mod是初始化go mod管理配置文件,然后go get下载gin依赖,这里显示用了V1.3.0版本。
- 有了框架依赖,我们只需要关注业务本身的实现,从reposity-》service_->controller,我们一步步实现。希望大家能跟上我的节奏,从0~1 实现这个项目,如果时间问题,大家可以一步步copy一下,主要是走一半开发思路。