我一直没有在这个博客上启用评论功能,但其实很早就想把它做出来了。 我试过 Disqus。它很酷,但事实证明并不符合我的需求。

对 Disqus 的看法

Disqus 拥有丰富的 UI 和用于讨论博客文章的各种功能,但它允许:

  • 匿名评论
  • 插入广告

关于匿名评论:值得庆幸的是,这个博客几乎没有读者留言。然而,最近许多名人因为不断收到恶意攻击性评论,最终饱受心理疾病的折磨。谁也不敢说这种事不会发生在这个小小的个人博客上。

插入广告则意味着 Disqus 在追踪用户信息。我不想让我的读者为安全问题担忧。

转向 utterances

于是我决定使用 utterances。 utterances 构建在 GitHub Issue API 之上,评论会存储在一个个 GitHub Issue 中。

utterances 列出的主要特性如下:

Open source. 🙌
No tracking, no ads, always free. 📡🚫
No lock-in. All data stored in GitHub issues. 🔓
Styled with Primer, the css toolkit that powers GitHub. 💅
Dark theme. 🌘
Lightweight. Vanilla TypeScript. No font downloads, JavaScript frameworks or polyfills for evergreen browsers. 🐦🌲

听起来不错吧?

评论前需要先通过 GitHub 认证1,这是因为 GitHub Issue 不允许游客留言。

我的博客托管在自己的私有云服务器上,而代码存放在 GitHub。对我来说,用 Issue 来管理评论更合理。

实现 utterances

下面介绍我在 Hugo 博客上的实现方法。 话虽如此,对我而言只需要寥寥几行。

我只是在 config.toml 里加了这几行:

[params.utterances]
    repo = "junkpiano/yusuke.cloud"
    issueTerm = "pathname"

请注意,具体配置取决于你的博客主题。不同的主题有不同的配置方式,请参考所用主题的 README。

填好 config.toml 之后,试着运行你的博客:

hugo serve -D # -D option includes draft posts. Remove it if you don't need it.

然后,你就会在博客文章底部看到评论表单。

总结

现在我可以收到你的评论了,快在下面和我打个招呼吧!


  1. 如果你还不了解 GitHub:GitHub 是一个供开发者存储程序源代码并与其他开发者共享的平台。也推荐看看这份 GitHub 指南:Mastering issues。 ↩︎