前言在《一篇带你用 VuePress + Github Pages 搭建博客》中,我们使用VuePress搭建了一个博客,最终效果查看:TypeScript中文文档。本文讲的是如何使用Vssue快速实现评论功能。内置主题因为我使用的是vuepress-theme-reco主题,主题内置评论插件@vuepress-reco/vuepress-plugin-comments,大家可以根据自己的喜好选择Valine或者Vssue。然后介绍一下Vssue。Vssue官网:https://vssue.js.org/zh/Vssue是一个Vue驱动的,基于Issue的评论插件。它支持多种代码托管平台,包括GitHub、GitLab、Bitbucket、Gitee和Gitea。因为它是基于Vue的,所以它可以作为Vue插件使用,很容易集成到Vue应用程序中。您可以点击官网链接进入首页,在页面的评论框中直接体验评论效果。开始1.创建GitHubOAuthApp这里我们使用GitHub作为托管平台,打开GitHub的开发者设置:https://github.com/settings/developers选择“OauthApps”,然后点击“Registeranewapplication”:对于本地测试,我们将主页URL和授权回调URL写为http://localhost:8080。创建应用后,我们点击Generateanewclientsecret来生成Clientsecrets:最后,我们会得到ClientID和Clientsecrets。2.修改config.jsmodule.exports={theme:'reco',themeConfig:{vssueConfig:{platform:'github',owner:'OWNER_OF_REPO',repo:'NAME_OF_REPO',clientId:'YOUR_CLIENT_ID',clientSecret:'YOUR_CLIENT_SECRET',}}}3。效果展示运行项目可以看到效果:但是注意,一开始没有评论的时候,需要点击图片中的“ClicktocreateIssue”才能正常评论。当你点击“CreateIssue”的时候,你对应的Github仓库也会创建一个issue,之后所有的回复都会出现在这个issue中。这是有评论后的效果:4.评论区开启。如果如果想默认不加载评论,只在某些页面显示评论功能,可以在valineConfig或vssueConfig中设置showComment:false,在需要显示评论的页面设置isShowComments:true。如果不设置想设置只对某篇文章开启评论功能,可以在front-matter中设置isShowComments:false问题:多个页面的评论混在一起,如果在多个页面创建评论,会发现所有的评论是在一起的,这是因为Vssue在尝试加载评论时,会根据标签和标题请求对应的Issue,参考Vssue的配置文档:https://vssue.js.org/zh/options/,其实我们可以配置这样的属性s标签,但是因为我们没有配置,所以请求的时候请求是一样的,自然就混在一起了。如果我们只是做一个留言板,是没有问题的,但是比如我的是一个TypeScript文档,我肯定希望每篇文章的评论是分开的,那怎么实现呢?虽然我们可以直接在config.js中这样写:YOUR_CLIENT_ID',clientSecret:'YOUR_CLIENT_SECRET',labels:'xxx'}}}但是如果不能动态设置标签,还是没用。最后我决定不使用reco主题自带的评论插件,而是使用Vssue提供的插件。其实reco内置的评论插件是在Vssue提供的插件的基础上进行了一层封装。如何实现?参考Vssue提供的VuePress指南:1.安装插件yarnadd@vssue/vuepress-plugin-vssue-Dyarnadd@vssue/api-github-v3-D2。使用插件//.vuepress/config.jsmodule.exports={plugins:{'@vssue/vuepress-plugin-vssue':{platform:'github',owner:'OWNER_OF_REPO',repo:'NAME_OF_REPO',clientId:'YOUR_CLIENT_ID',clientSecret:'YOUR_CLIENT_SECRET',},},};3、使用Vssue组件Vssue已经注册为Vue组件,你可以直接在你的VuePressMarkdown文件中使用它。
