Giscus:将 GitHub 讨论带到自己的博客
之前一直在找一些能够嵌入到自己博客文章上,游客可以登录已有的社交体系账号进行评论回复的,网上找了一些,但不多数都是国外的社交平台,也不知道国内的有没有。
下面列出几个之前了解过的:
- Facebook Comment (opens in a new tab) - 许多网站都使用这种方法。但就我个人而言,我一点也不喜欢它的用户界面。修复任何东西都非常困难。另外,假设要粘贴代码,很难粘贴任何东西。(没用过,不打算用)
- Disqus (opens in a new tab) - 感觉这个很难登录(貌似要科学上网)。但我看很多博客用这种,他们中的大多数应该更多地用于 Wordpress。(有待研究)
- Github Discussion Giscus (opens in a new tab)** - 偶然发现了 Giscus,它使用 GitHub Discussion API 创建一个讨论频道。(主要介绍这个)
前提须知
- 必须要用 GitHub 登录,写博客一般都是技术类的,看的人估计都有 GitHub 账号。
- 它与 GitHub Discussion 非常相关。如果有一天我将一篇文章移到另一个地方,这些评论将不会跟随,如果 GitHub Discussion 崩溃了,那也就不能发表评论。
- 当有人这样评论时,没有通知提醒。
- 它是开源的。
开始安装 Giscus
前往Giscus (opens in a new tab)一步一步进行
为存储库启用或禁用 GitHub Discussions 详细教程 前往 (opens in a new tab)
启用
当一切都完成时 我们需要粘贴的代码如下所示。giscus.app 帮助我们自动填充所有属性。粘贴它,你就完成了。
这是一个示例
import Head from 'next/head'
import { useMounted } from 'lib/use-mounted'
export default function Giscus() {
const mounted = useMounted()
return !mounted ? null : (
<>
<Head>
<script
src="https://giscus.app/client.js"
data-repo="hexuntao/hexuntao.com"
data-repo-id="YOUR_REPO_ID"
data-category="General"
data-category-id="YOUR_CATEGORY_ID"
data-mapping="title"
data-reactions-enabled="1"
data-theme="light"
crossOrigin="anonymous"
async
/>
</Head>
<div className="giscus" />
</>
)
}
如果是 NextJS,就用它。next/head
如果是 React,它是一个 SPA,我推荐使用 Helmet,把脚本放在上面。<head>
之后创建一个空的 div 插入,className="giscus"
之后浏览器加载完脚本就知道 iframe 组件要丢到这个 div 上了