[gitalk+vitepress]在vitepress中集成gitalk评论功能的步骤与坑

概要

原理:评论需要登陆github账户,每次评论相当于在github仓库中发issues,利用github仓库的issues来存放和管理每个用户的评论,然后gitalk调用api来显示到页面上,以达到评论和显示他人评论的目的。
总体步骤:首先需要完成github上OAuth应用的注册,然后下载gitalk组件,最后就是在vitepress的md页面中用代码显示gitalk评论栏与实现功能。
主要参考文档与博客:
1.官方文档
2.因为VitePress没有像VuePress那样的可以直接安装配置的评论插件,所以就需要自己动手,这里使用gitalk作为插件使用

第一步,github注册OAuth应用

登录github,点击右上角用户头像,下拉菜单中点击“Settings”跳转页面
在这里插入图片描述
在左侧的的菜单栏中,点击最下面的“Developer settings”进入新页面
在这里插入图片描述
选择“OAuth Apps”然后点击“New OAuth App”新键app
在这里插入图片描述
图片参考了(用鼠标写字好慢):https://younglina.top/write/docs/vitepress-gitalk.html

在这里插入图片描述
(说明一下,图中的回跳地址的意思是用户登录了github账户之后,跳转的地址,建议填写要放置评论的页面链接。)

创建好后会给你一个Client IDClient Secret,后者不可找回,一定要复制保存好,后面用的上。

第二步,下载gitalk组件(windows环境)

安装了vue的话,直接用下面的命令即可

npm i --save gitalk

第三步,vitepress对应md页面添加相关代码

<script setup>
import "gitalk/dist/gitalk.css";
import Gitalk from "gitalk";
import { onMounted } from 'vue';
onMounted(() => {
  if(typeof window !==undefined){
    var s_div = document.createElement('div');   // 创建节点
    s_div.setAttribute("id", "gitalk-page-container");   // 设置id
    document.querySelector('.content-container').appendChild(s_div);   // querySelector的节点可自己根据自己想加载的地方设置
    var gitalk = new Gitalk({  //(上面的都不要改,从这里开始填写信息)
        clientID: '8d8e96********797026d3',          // 填写之前创建OAuth App保存的clientID
        clientSecret: '235****234jkas12',  // 填写之前创建OAuth App保存的clientSecret
        repo: 'blogtalk',          // 填写你用于存放评论的仓库名,注意需要仓库打开了issues功能(一般默认打开)
        owner: 'CodeDuang',   // 填写你的github用户名
        admin: ['CodeDuang'], // 填写github管理者列表
        id: decodeURI(location.pathname),      // 不变,Ensure uniqueness and length less than 50
        distractionFreeMode: false  // 不变,Facebook-like distraction free mode
    })
    gitalk.render('gitalk-page-container')
  }
})
</script>
<div id="gitalk"></div>

填写情况如图所示(我想在contact.md页面加入评论功能,则在该md文件中加入相关代码)
在这里插入图片描述

代码解释

虽然是md文件,但在上面代码中,用

<script setup>
	
</script>

框住了用js代码进行gitalk配置的部分,这在vitepress中是允许的。


代码中的下面两段,是引入下载的gitalk组件,方便之后直接创建Gitalk对象

import "gitalk/dist/gitalk.css";
import Gitalk from "gitalk";

下面的代码创建了Gitalk对象,用于和github上面你创建的OAuth App进行联系,同时指定了评论存放的仓库名。

var gitalk = new Gitalk({  //(上面的都不要改,从这里开始填写信息)
        clientID: '8d8e96********797026d3',          // 填写之前创建OAuth App保存的clientID
        clientSecret: '235****234jkas12',  // 填写之前创建OAuth App保存的clientSecret
        repo: 'blogtalk',          // 填写你用于存放评论的仓库名,注意需要仓库打开了issues功能(一般默认打开)
        owner: 'CodeDuang',   // 填写你的github用户名
        admin: ['CodeDuang'], // 填写github管理者列表
        id: decodeURI(location.pathname),      // 不变,Ensure uniqueness and length less than 50
        distractionFreeMode: false  // 不变,Facebook-like distraction free mode
    })
gitalk.render('gitalk-page-container')

对gitalk评论模块的展示,可以直接使用html语句

<div id="gitalk"></div>

因为vitepress也允许在md文件中直接使用html的一些标签,比如<div>


注意:大部分教程并没有下面这一段代码

import { onMounted } from 'vue';
onMounted(() => {
  if(typeof window !==undefined){
    var s_div = document.createElement('div');   // 创建节点
    s_div.setAttribute("id", "gitalk-page-container");   // 设置id
    document.querySelector('.content-container').appendChild(s_div);   // querySelector的节点可自己根据自己想加载的地方设置

因为vitepress无法识别window字段,但gitalk需要window.document字段加载节点,所以需要下面代码对window字段进行补充。(不用做额外的操作,只是摘出上面的代码进行解释)

预览

在这里插入图片描述
如果评论模块显示404,说明没有连接到对应仓库issues,可以检查一下仓库名是否正确(只用仓库名,不是网址),以及你的用户名是否填正确(github用户除了用户名还有个昵称,注意区分用户名和昵称!!!),最后就是检查你的仓库打开issues没有。(总之,还是建议新建一个仓库用来专门存放评论内容)

如果干脆就没显示评论模块,可能是代码上有什么问题,按F12查看网页加载时的报错,以定位出问题的地方。

小结

花了蛮多时间的,完全没学过js和vue,脑袋都扣烂了,主要就是怎么在md文件中使用js语法,以及vitepress里面对window字段的报错,理论上我的两篇参考文档就可以解决大部分问题了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VitePress是一种基于Vue和Vite构建的静态网站生成器,它提供了一个简洁、高效的方式来创建文档和博客。它非常适合于开发者和技术人员构建自己的个人网站或团队的技术文档。 对于VitePress来说,评论插件是一个非常重要的功能评论插件可以让读者在浏览网站时对文章进行评论和讨论,这有助于促进互动和知识交流。 为了实现评论功能,用户可以选择使用第三方评论服务,如Disqus或Gitalk。通过这些服务,用户可以轻松地集成评论系统,同时也可以定制评论的样式和设置。在VitePress的配置文件,用户需要提供相应评论服务的设置参数,然后在网站的页面添加评论插件的代码即可。 使用评论插件的好处是,读者可以在文章下方直接发表自己的意见和看法,与作者和其他读者进行互动。这有助于增加网站的互动性和参与度,促进读者的留存和回访。 然而,评论插件也有一些注意事项。首先,用户需要确保评论插件的安全性,避免恶意评论和垃圾信息。其次,用户应当及时回复读者的评论,积极参与讨论,以增加读者的粘度。最后,用户也应该定期审核和清理评论,以保持网站的质量和可读性。 总而言之,VitePress评论插件为网站提供了互动和交流的平台,使得读者可以与作者和其他读者进行沟通和讨论。这对于建立一个积极的社区和提供有价值的内容非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值