静态HTML无法直接实现评论功能,需借助GitHub Issues(如utterances或gitalk)等免后端方案;localStorage仅限本地缓存,非真实评论;自建后端须解决并发、安全与持久化问题。

静态 HTML 页面没法直接跑评论功能
纯 原理是把每条评论转成一条 Issue,靠 有人写个 看到“用 PHP 接收 POST 写入 txt 文件”这种教程就停手。txt 不支持并发写入,多人同时评论大概率丢数据;没加 CSRF 防护,表单可能被跨站调用;没过滤 立即学习“前端免费学习笔记(深入)”; 评论区的核心矛盾从来不是“怎么显示”,而是“谁负责存、谁负责校验、谁承担安全责任”。选方案前,先想清楚你愿不愿意每天看 GitHub Notifications 处理灌水,或者能不能接受某天 Firebase 免费额度超限导致评论消失。index.html 文件里放个表单、几行 用 GitHub Issues 当评论后端最省事
gitalk 或 utterances 这类开源工具桥接。它们不碰你的服务器,只读写你仓库的 Issues API。
utterances 更轻:只需在 GitHub 创建公开仓库,加一段 ,指定 repo 和 issue-term(比如用页面 URL 的哈希做 Issue 标题)gitalk 配置稍多:要申请 GitHub OAuth App,填 clientID/clientSecret,但支持登录态复用和中文界面?v=2),issue-term 得设为 pathname 而非 url,否则同一页刷新出多个 Issue自己存本地 localStorage 是伪需求
saveComment() 把输入框内容塞进 localStorage,刷新后还能看见——这不算“评论区”,只是浏览器缓存演示。它不跨设备、不防刷新丢失(清缓存即清空)、别人打不开你的页面也看不到任何内容。
JSON.stringify() 存数组,取出来用 JSON.parse(),否则多次存会覆盖而非追加localStorage 有容量限制(通常 5MB),存几百条评论后可能报 QuotaExceededError
别碰 PHP/Node 后端除非你真搭得起来
,别人能往你的页面里注入任意 JS。
htmlspecialchars() 或 DOMPurify 过滤api/comments.ts)接请求,再连 Supabase 或 Firebase 存数据










