从零构建vue-blog评论系统:留言功能到邮箱通知的完整实现指南

发布时间:2026/9/26 17:55:05

从零构建vue-blog评论系统:留言功能到邮箱通知的完整实现指南 从零构建vue-blog评论系统留言功能到邮箱通知的完整实现指南【免费下载链接】vue-blogVue2 Node.js Mongodb 前后端分离的个人博客项目地址: https://gitcode.com/gh_mirrors/vueb/vue-blogvue-blog是一个基于Vue2 Node.js Mongodb的前后端分离个人博客项目其评论系统不仅支持基础的留言互动还实现了智能的邮箱通知功能。本文将详细介绍如何从评论功能设计到邮件通知实现的全过程帮助开发者快速掌握前后端分离架构下评论系统的开发要点。评论系统核心功能设计一个完整的博客评论系统需要包含三大核心模块评论提交与存储、评论展示与排序、互动反馈与通知。在vue-blog项目中这些功能分别通过前端组件和后端API实现。数据模型设计评论系统的基础是合理的数据结构设计。在server/db/db.js中定义了评论的数据模型包含用户信息、评论内容、时间戳等关键字段comment_n: Number实际存储的评论数据结构在server/api/comment.js中定义包含头像、用户名、评论内容、文章ID等必要信息const comment { imgName: req.body.imgName, name: req.body.name, address: req.body.address, date: Date(), content: req.body.content, articleId: req.body.articleId, like: 0 }功能模块划分评论系统主要分为以下功能模块评论提交用户发布新评论评论展示按时间或热度展示评论列表评论互动点赞功能通知系统评论回复与新评论邮件通知图博客评论系统架构示意图展示了前后端交互流程前端评论组件实现前端评论功能主要通过ArticleComment.vue组件实现该组件位于src/components/front/component/ArticleComment.vue负责评论的展示、提交和互动功能。评论列表展示评论列表使用Vue的v-for指令循环渲染评论数据展示用户名、评论内容、时间和点赞数等信息div classcomments v-for(comment,index) in comments div idinfo :classcomment.imgName p classcommentName#{{index 1}} span{{comment.name}}/span/p p classtext{{comment.content}}/p div classcommentFooter p classcommentDate{{comment.date | to_date}}/p a href#comment>// comment submit_comment: (context, payload) { return Vue.http.post(/api/comment, payload) }评论排序与点赞评论支持按时间或点赞数排序通过调用不同的API参数实现// 获取评论 get_comments: (context, payload) { return Vue.http.get(/api/comments, {params: {payload}}) .then(res { const comments res.data commit(set_comments, comments) }) }点赞功能通过patch请求更新点赞数update_like: (context, payload) { return Vue.http.patch(/api/comments/ payload.id, {option: payload.option}) }后端API实现后端评论API集中在server/api/comment.js文件中提供了评论的CRUD操作和通知功能。评论提交API评论提交API负责验证用户信息、保存评论数据并触发通知机制router.post(/api/comment, (req, res) { db.Comment.findOne({name: req.body.name, articleId: req.body.articleId}, (err, doc) { if (doc doc.address ! req.body.address) { res.status(403).end(用户名已存在) } else if(!doc || doc.address req.body.address) { const comment { // 评论数据 } // 保存评论 new db.Comment(comment).save().then(() { // 发送通知邮件 mail.send(xxxqq.com, 您的博客有一条新评论, content, res) res.status(200).send(send email successfully) }) // 更新文章评论数 db.Article.update({aid: req.body.articleId},{$inc: {comment_n: 1}}, (err, data) { // 错误处理 }) } }) })评论获取API评论获取API支持按时间或点赞数排序并返回指定文章的评论列表router.get(/api/comments, (req, res) { const articleId req.query.payload.id if (req.query.payload.sort date) { // 按时间排序 db.Comment.find({articleId: articleId}, name date content like imgName).sort({date: -1}).exec() .then((comments) { res.send(comments) }) } else if (req.query.payload.sort like) { // 按点赞数排序 db.Comment.find({articleId: articleId}, name date content like imgName).sort({like: -1}).exec() .then((comments) { res.send(comments) }) } else { // 默认排序 db.Comment.find({articleId: articleId}, name date content like imgName).exec().then((comments) { res.send(comments) }) } })点赞功能API点赞功能通过patch请求实现使用MongoDB的$inc操作符原子更新点赞数router.patch(/api/comments/:id, (req, res) { const id req.params.id if (req.body.option add) { db.Comment.update({_id: id}, {$inc: {like: 1}}, (err, data) { // 处理结果 }) } else if (req.body.option drop) { db.Comment.update({_id: id}, {$inc: {like: -1}}, (err, data) { // 处理结果 }) } })邮箱通知系统实现vue-blog的评论系统不仅支持基础的评论功能还实现了智能的邮箱通知机制当有新评论或回复时自动发送邮件通知。邮件发送模块邮件发送功能在server/email.js中实现使用nodemailer库发送HTML格式邮件const nodemailer require(nodemailer) let transporter nodemailer.createTransport({ service: 126, auth: { user: blogbutler126.com, pass: 123456abc } }) exports.send function(to, subject, html, res) { const mailOptions { from: 博客小管家 blogbutler126.com, to : to, subject : subject, html : html } transporter.sendMail(mailOptions, function(error, info){ if (error) { console.log(error) res.status(504).end(通知邮件发送失败) } else { console.log(Message sent: info.response) } }) }评论通知触发机制在评论提交时系统会判断是否为回复评论并分别发送通知给文章作者和被回复者// 判断是否为回复评论 if (/^(.*):/.test(req.body.content)) { const reviewer /^(.*):/.exec(req.body.content)[1] // 被回复者名字 db.Comment.findOne({name: reviewer, articleId: req.body.articleId}, (err, doc) { const url https://www.xxx.cn req.body.curPath const replyEmail doc.address // 发送回复通知邮件 const content emailForm(欢迎常来我的博客, reviewer, req.body.name, 回复了你的评论, req.body.content, url) mail.send(replyEmail, 您在FatDong的博客有一条新评论, content, res) }) } // 发送新评论通知给博主 new db.Comment(comment).save().then(() { const url https://www.xxx.cn req.body.curPath const content emailForm(MyBlog Message, 站长, req.body.name, 评论了你的文章, req.body.content, url) mail.send(xxxqq.com, 您的博客有一条新评论, content, res) res.status(200).send(send email successfully) })邮件模板设计邮件内容使用HTML模板生成在server/api/comment.js中定义了邮件模板函数const emailForm (title, name, otherName, message, content, url) { let string div stylewidth: 90%; border: 2px solid lightgreen; margin: 1rem auto; padding: 1rem; text-align: center; p styleborder-bottom: 1px dashed lightgreen; margin: 0;padding-bottom: 1rem; color: lightgreen; font-size: 1.25rem;${title}/p p stylemargin: 1rem 0 0;hello,${name} #x1f608/p p stylemargin: 0 0 1rem;${otherName}${message}/p p stylewidth: 70%; border-left: 4px solid lightgreen; padding: 1rem; margin: 0 auto 2rem; text-align: left;white-space: pre-line;${content}/p a href ${url} styletext-decoration: none; background: lightgreen;color: #fff; height: 2rem; line-height: 2rem; padding: 0 1rem; display: inline-block; border-radius: 0.2rem;前往查看/a /div return string }系统集成与使用项目结构评论系统在项目中的主要文件结构如下前端组件src/components/front/component/ArticleComment.vue状态管理src/store/actions.js、src/store/mutations.js后端APIserver/api/comment.js数据模型server/db/db.js邮件服务server/email.js安装与配置要在本地运行该项目首先需要克隆仓库git clone https://gitcode.com/gh_mirrors/vueb/vue-blog然后安装依赖并配置邮件服务修改server/email.js中的邮件服务配置配置MongoDB数据库连接运行前后端服务总结与扩展vue-blog评论系统通过前后端分离架构实现了评论提交、展示、排序、点赞和邮件通知等完整功能。系统设计遵循了模块化原则将评论功能分解为数据模型、API接口、前端组件和通知服务等独立模块便于维护和扩展。未来可以考虑添加以下功能评论审核机制防止垃圾评论评论嵌套回复支持多级评论评论表情支持丰富评论内容评论 markdown 格式支持增强排版功能通过本文的介绍相信你已经掌握了vue-blog评论系统的实现原理和开发方法可以在此基础上进行二次开发和功能扩展打造更加完善的博客评论体验。【免费下载链接】vue-blogVue2 Node.js Mongodb 前后端分离的个人博客项目地址: https://gitcode.com/gh_mirrors/vueb/vue-blog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/19 21:45:59

如何高效使用AI生产力工具:3个实用技巧指南

如何高效使用AI生产力工具:3个实用技巧指南 【免费下载链接】Apt AI Productivity Tool - Free and open source, improve user productivity, and protect privacy and data security. Including but not limited to: built-in local exclusive ChatGPT, DeepSeek,…

2026/9/22 23:37:55

如何利用AI自动化求职全流程:career-ops完整指南

如何利用AI自动化求职全流程:career-ops完整指南 【免费下载链接】career-ops Open-source AI job search: scan job portals, evaluate listings with a structured A-F rubric into a 1.0-5.0 score, tailor your CV, track applications — runs locally in your…

2026/9/26 17:50:20

用Python批量提取txt文件内容,自动生成目录索引文档

大概一个月前,朋友把他攒了多年的电子书和文档备份发给我,说想整理出一份清单。我打开那个文件夹一看,好家伙,两千多个txt文件,文件名从“笔记01”到随手打的“未命名168”都有。人肉一个个打开看根本不现实。我花了二…

2026/9/26 17:50:20

教你动手写VScode插件:用TypeScript+vsce从零搭建TaoToken配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/26 17:50:20

Codex本地接入GitHub实战:安全可控的API集成与上下文构建

1. 项目概述:这不是“接入GitHub”,而是让Codex真正活在你的开发工作流里Codex不是另一个需要你额外登录、额外配置、额外维护的SaaS工具。它本质上是一套本地可部署、可调试、可定制的代码生成与理解引擎,而GitHub——准确说是GitHub的API生…

2026/9/26 17:50:20

Hutool实战指南:验证码、断言与CSV导出高效技巧

做Java开发这么多年,工具类库用过不少,但真正让我觉得顺手、省心、值得放进项目里的,Hutool绝对排得上号。它不是什么高深框架,就是一个把日常开发中那些重复低效的操作统一封装好的工具包,字符串处理、集合操作、日期…

2026/9/26 17:45:20

Wan 3.0实战:30秒商品视频参考输入的分工指南

把一件商品拍成30秒的动态视频,放在半年前还得靠实景棚拍、模特走位、灯光调度,现在用Wan 3.0这类视频生成模型,只要把参考图、参考视频、参考音频喂进去,就能直接“算”出一条能用的片子。但问题也在这儿——参考给了好几样&…

2026/9/25 21:00:17

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/25 20:59:52

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/26 0:04:28

画质修复APP怎么选?Wink影像修复能力与产品实力解析

现如今手机拍摄场景愈发丰富,演唱会直拍、漫展记录、老视频翻新、日常vlog录制,都会遇到画面模糊、噪点多、曝光失衡等问题,不少用户在挑选工具时比较在意一款画质修复APP能够兼顾修复效果与自然质感。Wink作为美图公司推出的全球化AI影像增强…

2026/9/26 0:04:28

超低能耗建筑K值要求能否满足?浙东铝业建筑型材解析

核心摘要浙东铝业的超低能耗系统门窗产品,资料显示保温性能可达 K≤1.4W/(㎡K),能够对应上海地区超低能耗住宅对门窗保温性能的应用需求。判断建筑是否满足超低能耗要求,不能只看铝型材本身,还需要结合玻璃、隔热条、密封系统、开…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/25 18:41:36

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑