因为是仿写他人的优秀博客后端,已经把博客代码拉下,进行分析。
但是在分析的过程中自己理解的很困难。
所以想出了一种解决方法:
项目概览 基本功能
- 将原项目代码拉下后,大概研究一下该项目实现的基本功能有哪些?自己能不能再仿着在原项目的基础上增加相同的功能。
- 这样可以增加自己上手的机会,了解功能代码的实现
- 给自己提需求,看看还能完成什么功能,自己能不能将功能完善?怎么完善?
这是前端页面,展示的目的在于能更清晰的看到该项目的功能
基本有以下几项:
- 页面的路由跳转
- 评论功能
- 点赞功能
- 分页展示
- 访问统计
- 播放音乐
- 展示最新最热文章
项目结构
功能阐述
conf文件中放的是各种配置文件,我了解到的是一些全局变量、文件读写
重复功能实现 1.实现简单的路由跳转 图中蓝色对话框点击实现路由跳转,跟导航栏的留言板跳转一样。跳转到留言板页面
重复实现一次
需求完成,通过点击蓝色对话框可以跳转至留言板页面
代码分析:
router.Static("/assets", "./static")
//渲染html页面
router.LoadHTMLGlob("views/*")
router.GET("/", handleIndex)
router.GET("/about", handleAbout)
router.GET("https://blog.csdn.net/liuyan", handleLiuYan)
router.GET("/article/:id", handleArticles)
router.GET("/items/:id", handleItems)
router.POST("/comment", handlePostComment)
//运行的端口
router.Run(":8000")
//在main方法中,我们可以找到更换路由的get请求,这里找到切换到留言板的那条get请求 路径对应是https://blog.csdn.net/liuyan 所以将需要修改的路径改成https://blog.csdn.net/liuyan
//这里我们看一下handle处理器方法中实现了什么
func handleLiuYan(c *gin.Context) {
cmts := []conf.Comment{}
count := 0 //评论数量
for i, v := range conf.Cmt.Comts {
//fmt.Printf("%#vn", c)
if v.ID == "about" {
cmts = append(cmts, conf.Cmt.Comts[i])
count++
}
}
c.HTML(http.StatusOK, "liuyan.html", gin.H{"items": conf.Item.Items, "cmtcounts": count, "cmts": cmts, "newcmts": NewCmts, "newart": NewArts, "hotart": HotArts, "vistcnt": conf.Stat.ToCnt})
}
2、像首页一样实现可以展示多篇文章的功能


