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

最近几天一点都没闲着,自从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

本帖由系统于 8个月前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 10

先mark,后面计划自己做评论 :smile:

8个月前

@fmaple 加油,laravel做评论还是很舒服

8个月前
Aaron

mark, 以后再学习

8个月前

@Aaron 加油

8个月前

学习了

7个月前

mark

7个月前
tegic

评论分页呢?

5个月前

@tegic 分页不是laravel带的有吗,分页是另一个大块了

5个月前

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

5个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!