GoTell:为JAMstack站点打造的自定义评论系统

GoTell:为JAMstack站点打造的自定义评论系统

gotellNetlify Comments is an API and build tool for handling large amounts of comments for JAMstack products项目地址:https://gitcode.com/gh_mirrors/go/gotell

项目介绍

GoTell 是一个专为 JAMstack 站点 设计的评论系统。它不仅仅是一个简单的评论工具,而是一个集成了构建工具和 API 的完整解决方案。通过 GoTell,开发者可以轻松地在静态站点上实现自定义评论功能,而无需依赖第三方服务如 Disqus 或 Facebook Comments。

项目技术分析

GoTell 的核心技术架构包括两个主要部分:构建工具和 API。

构建工具

GoTell 的构建工具负责将用户提交的评论推送到 GitHub 仓库,并触发 Netlify 的构建流程。每次有新的评论提交时,Netlify 会自动生成一个新的静态文件,包含最新的评论数据。

API

GoTell 的 API 是一个轻量级的 HTTP 服务,接受 HTTP POST 请求来提交评论。API 会验证评论的有效性,并进行简单的垃圾评论过滤。通过环境变量配置,API 可以将评论推送到指定的 GitHub 仓库。

项目及技术应用场景

GoTell 适用于以下场景:

  1. 静态站点:如果你正在使用 JAMstack 架构搭建静态站点,GoTell 可以帮助你轻松集成评论功能。
  2. 自定义评论样式:与传统的评论系统不同,GoTell 允许你完全自定义评论的样式和交互方式,满足个性化需求。
  3. 低成本部署:通过与 Netlify 和 GitHub 的集成,GoTell 可以实现低成本、高效率的评论系统部署。

项目特点

  1. 自定义性强:GoTell 不是一个现成的评论系统,而是一个构建块,允许开发者根据自己的需求定制评论功能。
  2. 集成简单:通过简单的配置和 API 调用,开发者可以快速将 GoTell 集成到现有的静态站点中。
  3. 安全可靠:GoTell 通过 GitHub 仓库存储评论数据,确保数据的安全性和可靠性。
  4. 开源免费: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 应用到你的项目中,享受开源社区带来的便利和自由。

gotellNetlify Comments is an API and build tool for handling large amounts of comments for JAMstack products项目地址:https://gitcode.com/gh_mirrors/go/gotell

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

褚添北Dwight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值