GoTell:为JAMstack站点打造的自定义评论系统
项目介绍
GoTell 是一个专为 JAMstack 站点 设计的评论系统。它不仅仅是一个简单的评论工具,而是一个集成了构建工具和 API 的完整解决方案。通过 GoTell,开发者可以轻松地在静态站点上实现自定义评论功能,而无需依赖第三方服务如 Disqus 或 Facebook Comments。
项目技术分析
GoTell 的核心技术架构包括两个主要部分:构建工具和 API。
构建工具
GoTell 的构建工具负责将用户提交的评论推送到 GitHub 仓库,并触发 Netlify 的构建流程。每次有新的评论提交时,Netlify 会自动生成一个新的静态文件,包含最新的评论数据。
API
GoTell 的 API 是一个轻量级的 HTTP 服务,接受 HTTP POST 请求来提交评论。API 会验证评论的有效性,并进行简单的垃圾评论过滤。通过环境变量配置,API 可以将评论推送到指定的 GitHub 仓库。
项目及技术应用场景
GoTell 适用于以下场景:
- 静态站点:如果你正在使用 JAMstack 架构搭建静态站点,GoTell 可以帮助你轻松集成评论功能。
- 自定义评论样式:与传统的评论系统不同,GoTell 允许你完全自定义评论的样式和交互方式,满足个性化需求。
- 低成本部署:通过与 Netlify 和 GitHub 的集成,GoTell 可以实现低成本、高效率的评论系统部署。
项目特点
- 自定义性强:GoTell 不是一个现成的评论系统,而是一个构建块,允许开发者根据自己的需求定制评论功能。
- 集成简单:通过简单的配置和 API 调用,开发者可以快速将 GoTell 集成到现有的静态站点中。
- 安全可靠:GoTell 通过 GitHub 仓库存储评论数据,确保数据的安全性和可靠性。
- 开源免费:GoTell 采用 MIT 许可证,开发者可以自由使用、修改和分发。
如何开始
设置静态评论
首先,克隆 Netlify Comments starter template 并推送到你的 GitHub 账户。然后,访问 Netlify 并选择你的新仓库。点击 Save,Netlify 将开始构建你的评论线程。
设置 API
你需要在服务器上运行 API。推荐设置以下环境变量:
GOTELL_SITE_URL=https://mysite.example.com # 你的静态站点URL
GOTELL_REPOSITORY=user/repo # GitHub仓库的用户名/仓库名
GOTELL_ACCESS_TOKEN=1253523421313 # 具有写权限的个人GitHub访问令牌
设置好环境变量后,运行:
gotell api
集成到你的站点
在你的静态站点上,每个需要评论功能的页面都需要添加一个元数据标签,例如:
<script id="gotell" type="application/json">{"created_at":"2016-07-07T08:20:36Z"}</script>
你还可以通过在站点根目录下添加 /gotell/settings.json
文件来配置 GoTell,例如:
{
"banned_ips": [],
"banned_keywords": [],
"banned_emails": [],
"timelimit": 604800
}
这些设置可以控制简单的垃圾评论过滤和评论关闭的时间限制。
提交和显示评论
要允许用户提交评论,你需要在评论表单中发送请求到评论 API。以下是一个使用现代 fetch
API 的示例:
const thread = document.location.pathname;
fetch(API_URL + thread, {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
author: data.name,
email: data.email,
body: data.message,
parent: data.parent
})
}).then((response) => {
console.log("Comment posted!");
});
要显示评论,可以通过以下方式获取 JSON 数据:
const slug = document.location.pathname.replace(/\//g, '-').replace(/(^-|-$)/g, '') + '.json';
fetch(COMMENT_URL + '/' + slug).then((response) => {
console.log("Got comments: %o", response);
});
GoTell 还会为每个线程生成一个 threadname.count.json
文件,包含评论数量的 JSON 对象,例如:
{"count": 42}
这提供了一种低带宽的方式来获取评论数量。
许可证
GoTell 采用 MIT 许可证 发布。请确保你理解其 条款和保证。
GoTell 是一个强大且灵活的评论系统,适合那些希望在 JAMstack 站点上实现自定义评论功能的开发者。通过简单的配置和集成,你可以轻松地将 GoTell 应用到你的项目中,享受开源社区带来的便利和自由。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考