评论功能完成,顺便总结下开发评论的经验

最近几天一点都没闲着,自从2月6日新版博客发布以来,一共5天时间写了83个commits😎,不过也收获了19个star😄,感谢各位老铁刷的star哈哈😄

这两天最大的更新就是加了一个评论功能,包括后台的评论管理,加上旧版博客的评论,手撸过很多次评论了,也算有点心得,稍后就做一个详细的总结,如果有想要手撸评论的朋友希望能帮到你,先放两张图看看效果😏

前台效果图如下,截的手机版的,电脑的也差不多,还是简约风:

后台截图如下,包括评论和评论回复的管理,可以删除和定位到前台位置:

下面总结下开发评论系统的一些心得体会:

  1. 关于评论中的用户认证
  2. 几种评论的分析和选择
  3. 评论系统的设计和数据结构

一、关于评论中的用户认证

做评论就必须要考虑用户认证的问题,旧版博客我是首先做了一个登陆系统,然后登陆后评论就可以附带个人信息进行展示,不登录的话可以匿名评论但是不会有任何信息

这次做评论我进行了很多的调整,首先我没做登录系统(其实还是有,不过没放出来😏)因为考虑到绝大部分人懒的登录(比如我看吃鸡直播的时候经常宁愿看标清的都不想登陆2333),干脆直接不要登录了,但是又想尽可能的知道留言人的信息,于是就采用了常见的匿名留言附加自愿输入姓名,邮箱,个人网站等信息的方式,邮箱可以用来给留言人发提醒邮件(当留言被回复时)

二、几种评论的分析和选择

做评论之前一定要对评论的架构了解清楚,于是我分析了一些常见的评论系统,发现常见的评论分为两种类型:

① 每个评论占一楼,对这条评论的回复和对回复的回复都放在本楼的右下侧,以一个子模块的形式展现,典型例子:百度贴吧,简书,示意图如下:

优点:回复集中显示,看起来方便

缺点:样式较复杂,每层楼的回复多了还要加入分页

② 不管评论还是回复都完全一样,一条一条的罗列下去,只是回复通过提及或者引用的方式,示意图如下:

优点:简介,逻辑没那么复杂,样式也统一

缺点:回复不集中,如果想看例如两个用户完整的对话就比较困难

两种方式各有优劣,其实都是不错的方式,我选择了第一种

三、评论系统的设计和数据结构

这里以第一种评论进行设计和分析:

在第一种评论系统中,评论和回复看似是分开的,以一个评论对应多个回复这样的关系关联着,但是还是可以把数据统一,回复也是评论,只不过有一个父节点,下面是我的评论表结构:

  • id (唯一自增键)
  • article_id(对应的文章 id)
  • parent_id(父节点 id)
  • target_name(用来保存被回复者的昵称,如果有用户系统则保存 id)
  • content(回复内容)
  • ...(其他评论相关的)

注意一个地方就行,每层楼里的回复不管是回复谁的,父节点 id 都要保存该层楼对应的评论(父节点)的 id,至于被回复人的昵称加一个字段来保存,然后前台显示的时候使用两层循环就可以了,第一层循环显示文章所有的评论,然后循环内套一个循环显示该评论对应的所有回复即可

手撸评论系统的过程中收获还是很多的,没尝试过的朋友建议花点时间尝试一下,建议不要用那种第三方评论系统,自己掌握不到数据,毕竟我们有程序员的骄傲🤠

— END —

原文链接:评论功能完成,顺便总结下开发评论的经验
GitHub:https://github.com/SadCreeper/laravel-blog-v2