你好,我是猿java。
维护个人的技术网站已经成为了很多程序员的日常工作,如何搭建免费的技术博客,可以参考我往期的文章:如何搭建自己免费的技术博客,有了网站后,我们希望有个评论区可以和读者互动,因此我们就来分享一下如何
搭建一个免费的评论模块。
素材
我们采用的是 giscus,它是一个开源,免费的工具,可以和github很好的集成。
步骤
创建评论仓库
因为giscus是和github集成,所以需要在github上创建一个 public的仓库用于存放评论的内容。比如仓库名:blog-comments
评论仓库授权
在 github上,导航到存储库blog-comments的主页,点击 ⚙️Settings 按钮

找到 Discussions功能勾选上,再点击 Set up Discussions按钮,默认配置后,点击 Start Discussions按钮,授权完成


启用Discussions
前往giscus对 blog-comments启用giscus

获取存储仓库的API 密钥
可以通过 GitHub GraphQL API 访问 GitHub 详细信息,也可以在此链接访问,然后使用你的GitHub 帐户登录
请求参数如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | // owner 是你github的账户名, name是你存储评论的仓库名 query {   repository(owner: "yuanjavar", name:"blog-comments"){     id     discussionCategories(first:10) {       edges {         node {           id           name         }       }     }   } }
   | 
 
接口返回,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
   | {   "data": {     "repository": {       "id": "R_kgXssHsd5g",   // 仓库id       "discussionCategories": {         "edges": [           {             "node": {               "id": "DIC_DJSHUSs4M-2",               "name": "Announcements"             }           },           {             "node": {               "id": "DIC_kDDOWWMs4CRM-3", // category id               "name": "General"           // category name             }           },           {             "node": {               "id": "DIC_kdyejDW4CRM-5",               "name": "Ideas"             }           },           {             "node": {               "id": "DIC_kSKDW4CRM-7",               "name": "Polls"             }           },           {             "node": {               "id": "DIC_kwDDDW5s4CRM-4",               "name": "Q&A"             }           },           {             "node": {               "id": "DIC_kwDKEKED5RM-6",               "name": "Show and tell"             }           }         ]       }     }   } }
  | 
 
安装 @giscus/react 包
导入并使用 Giscus 组件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | import { Giscus } from "@giscus/react";
  export default function Comment() {   return (     <Giscus       repo="yuanjavar/blog-commnets"       repoId="R_kgDOGjYtbQ"       category="General"       categoryId="DIC_kwDOGjYtbc4CA_TS"       mapping="pathname"       reactionsEnabled="0"       emitMetadata="0"       theme="dark"     />   ); }
  | 
 
最后我们看下效果

学习交流
如果你觉得文章有帮助,请帮忙转发给更多的好友,或关注公众号:猿java,持续输出硬核文章。