这是官方文档

这是效果

开通Giscus

Giscus是github的一个功能,用了专门存放评论的功能。需要依托一个仓库。

我这里就拿我这个当前vuepress项目开开通。

Settings>Features>Discussions

获取Giscus信息

进入此网站,获取信息

在你的vuepress项目中启用此插件

yarn add -D vuepress-plugin-comment2@next

my-book/docs/.vuepress/config.js

plugins: [
...
commentPlugin({
provider: "Giscus",
repo: "dshvv/red-treasure-book",
repoId: "MDEwOlJlcG9zaXRvcnk0MDcxNDYxODA=",
category: "Announcements",
categoryId: "DIC_kwDOGESOxM4CPs5U",
})
]

配置和应用主题

此插件需要自己全局注册评论组件 。

推荐将评论组件 () 插入在 组件后。

所以我们需要使用一个主题来完成这些(vuepress2 已经不提供暴漏layout组件了,所以只能如此)

创建一个主题

在my-book/docs/.vuepress下创建如下目录结构

.vuepress
|--index.js
|--layout
|--index.vue

index.js

const { path } = require('@vuepress/utils');
const { defaultTheme } = require("@vuepress/theme-default"); module.exports.commentTheme = options => ({
name: "comment-theme", // we are extending @vuepress/theme-default
extends: defaultTheme(options), layouts: {
// we override the default layout to provide comment service
Layout: path.resolve(__dirname,"layout", "index.vue"),
},
});

layout>index.vue

<template>
<ParentLayout>
<template #page-bottom>
<CommentService :darkmode="isDarkMode" />
</template>
</ParentLayout>
</template>
<script setup lang="ts">
import { onBeforeUnmount, onMounted, ref } from "vue";
import ParentLayout from "@vuepress/theme-default/lib/client/layouts/Layout.vue";
const isDarkMode = ref(false);
let observer;
onMounted(() => {
const html = document.querySelector("html") as HTMLElement;
isDarkMode.value = html.classList.contains("dark");
// watch theme change
observer = new MutationObserver(() => {
isDarkMode.value = html.classList.contains("dark");
});
observer.observe(html, {
attributeFilter: ["class"],
attributes: true,
});
});
onBeforeUnmount(() => {
observer.disconnect();
});
</script>

然后应用主题

my-book/docs/.vuepress/config.js修改主题属性如下

const { commentPlugin } = require("vuepress-plugin-comment2");
const { commentTheme } = require("./theme"); module.exports = {
...
theme: commentTheme({
contributorsText: "作者",
lastUpdatedText: "最后更新",
sidebar,
navbar: [
{
text: "博客",
link: "https://www.cnblogs.com/dshvv",
},
],
}), plugins: [
...
commentPlugin({
provider: "Giscus",
repo: "dshvv/red-treasure-book",
repoId: "MDEwOlJlcG9zaXRvcnk0MDcxNDYxODA=",
category: "Announcements",
categoryId: "DIC_kwDOGESOxM4CPs5U",
}),
],
};

vuepress2.x集成评论插件的更多相关文章

  1. 如何通过Gitalk评论插件,5分钟为你的博客快速集成评论功能

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  2. 10_SpringBoot集成TkMybatis插件

    10_SpringBoot集成TkMybatis插件 明天你好向前奔跑 关注  0.5 2018.09.11 11:15 字数 163 阅读 3794评论 0喜欢 3 @Author Jacky Wa ...

  3. Orchard运用 - 整合多说评论插件

    曾经我在一随笔讲述如何整合第三方Disqus评论插件,不过这一插件不是本土,对中国客户毕竟有点别扭.比如这一随笔就提到为啥要选择多说 - 另外一个国内比较知名的评论插件. 今天跟大家分享如何用最简单的 ...

  4. Orchard运用 - 整合Disqus评论插件

    评论对于博客系统那是必须具备的一个功能,Orchard本身也默认实现了评论模块,你可以集成到其他内容,比如博客随笔,不过觉得有点寒碜,样式有点呆板.幸运的是,你可以简单集成第三方评论插件,比如Disq ...

  5. solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

    昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...

  6. 记录一次bug解决过程:eclipse集成lombok插件

    一 总结 eclipse集成插件lombok: 启动Spring Boot项目: sublime全局搜索关键字:ctrl + shift + F JDK8中的lambda表达式使用 二 BUG描述:集 ...

  7. 一个前端引用Facebook评论插件案例

    最近公司海外的同事提了一个新的需求:那就是将Facebook的评论系统接入到公司海外网站的资讯详情页. 下面做一个简单的介绍: 首先我们登录到Facebook开发者平台:然后进入评论插件系统(http ...

  8. Struts2之—集成Json插件实现Ajax

       上篇博客介绍了Struts2中自己定义结果集实现Ajax,也分析了它的缺点:这样自己定义的结果集,写死了,不能做到client须要什么数据就传什么数据:Struts2之-自己定义结果集实现aja ...

  9. sublime 集成git插件,及git常用命令

    以前用了很久的totoiseSVN,显然不够高大上,开发界的版本装x利器还得是git.然而git的命令行对没怎么用过linux的人可能觉得还不如用gitGUI,可是当你知道sublime可以集成git ...

  10. 号外号外!解决github+hexo+yilia评论插件的问题!!!

    先走一波效果图!    本人网站--http://www.wenzheng.club/ ps:效果还是不错的,支持QQ微信登录,支持表情,甚至gif动图评论! 插件采用韩国服务器的来必力评论插件--h ...

随机推荐

  1. 【保姆级教程】windows 安装 docker 全流程

    一.背景 许多小伙伴在安装 Dify 或是 RagFlow 这些工具的时候,往往会遇到一个难题,那就是 Docker 的安装. 首先,我们的PC安装的绝大部分是 Windows,但众所周知的原因,Wi ...

  2. FREERTOS指令测试的思考

    采用freertos编程后,有必要增加指令测试的功能:   1.便于对于软件各个子模块或功能点进行测试.   2.便于对硬件各个功能点是否正常进行测试. 在裸机编程中,我们一般使用串口进行运行数据的打 ...

  3. 想构建一个Web学习数据库管理系统

    ​ 有过爬虫的学习基础,凭借兴趣学习到 视频爬取和反向解析那里(没学完). 以及最新出来的技术 分布式多线程.selenium.scrpy 等技术  3 3 防盗链 抓取梨视频(1)_哔哩哔哩_bil ...

  4. 匿名内部类、lambda匿名函数表达式

    a.匿名内部类的定义格式: 接口名称 对象名 = new 接口名称(){ //覆盖重写所有抽象方法 }: 一. /** * lambda匿名函数的使用 * Lambda省去面向对象的条条框框,格式由3 ...

  5. 深入理解Java虚拟机-线程安全与锁优化

    线程安全级别 级别 描述 示例 不可变(Immutable) 对象状态不可变,天然线程安全. String.Integer 绝对线程安全 所有操作都线程安全(Java 中极少见). Vector(通过 ...

  6. Cobalt Strike基础

    Cobalt Strike基础 Staged(有阶段) 在有阶段的执行方式中,分为Stager和Stage两个阶段 Stager(初始执行载荷): ​ 定义:Stager是Stage 1,是一个较小的 ...

  7. app类型划分

    app类型分为native类型,web类型,hybrid类型 一.native类型 1.优点:直接依托于操作系统,交互性最强,性能最好,功能最为强大 2.缺点:开发成本高,无法跨平台,更新缓慢,审核周 ...

  8. 解决 podman 容器无法在宿主机和容器内部相互访问问题的记录

    解决 podman 容器无法在宿主机和容器内部相互访问问题的记录 近期在使用 podman 时,遇到了容器无法在宿主机和容器内部相互访问的问题.经过一番探索,参考了这篇文章,成功解决了该问题.在此,我 ...

  9. Sentinel——pull模式规则持久化

    目录 pull模式规则持久化 定义数据源 定义SPI接口文件 测试 pull模式规则持久化 pull 模式的数据源(如本地文件.RDBMS 等)一般是可写入的.使用时需要在客户端注册数据源:将对应的读 ...

  10. 国际化利器 Intl Messageformat

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霜序 Formats ICU Message string ...