vuepress2.x集成评论插件
这是官方文档
这是效果

开通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集成评论插件的更多相关文章
- 如何通过Gitalk评论插件,5分钟为你的博客快速集成评论功能
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- 10_SpringBoot集成TkMybatis插件
10_SpringBoot集成TkMybatis插件 明天你好向前奔跑 关注 0.5 2018.09.11 11:15 字数 163 阅读 3794评论 0喜欢 3 @Author Jacky Wa ...
- Orchard运用 - 整合多说评论插件
曾经我在一随笔讲述如何整合第三方Disqus评论插件,不过这一插件不是本土,对中国客户毕竟有点别扭.比如这一随笔就提到为啥要选择多说 - 另外一个国内比较知名的评论插件. 今天跟大家分享如何用最简单的 ...
- Orchard运用 - 整合Disqus评论插件
评论对于博客系统那是必须具备的一个功能,Orchard本身也默认实现了评论模块,你可以集成到其他内容,比如博客随笔,不过觉得有点寒碜,样式有点呆板.幸运的是,你可以简单集成第三方评论插件,比如Disq ...
- solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件
昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...
- 记录一次bug解决过程:eclipse集成lombok插件
一 总结 eclipse集成插件lombok: 启动Spring Boot项目: sublime全局搜索关键字:ctrl + shift + F JDK8中的lambda表达式使用 二 BUG描述:集 ...
- 一个前端引用Facebook评论插件案例
最近公司海外的同事提了一个新的需求:那就是将Facebook的评论系统接入到公司海外网站的资讯详情页. 下面做一个简单的介绍: 首先我们登录到Facebook开发者平台:然后进入评论插件系统(http ...
- Struts2之—集成Json插件实现Ajax
上篇博客介绍了Struts2中自己定义结果集实现Ajax,也分析了它的缺点:这样自己定义的结果集,写死了,不能做到client须要什么数据就传什么数据:Struts2之-自己定义结果集实现aja ...
- sublime 集成git插件,及git常用命令
以前用了很久的totoiseSVN,显然不够高大上,开发界的版本装x利器还得是git.然而git的命令行对没怎么用过linux的人可能觉得还不如用gitGUI,可是当你知道sublime可以集成git ...
- 号外号外!解决github+hexo+yilia评论插件的问题!!!
先走一波效果图! 本人网站--http://www.wenzheng.club/ ps:效果还是不错的,支持QQ微信登录,支持表情,甚至gif动图评论! 插件采用韩国服务器的来必力评论插件--h ...
随机推荐
- 【保姆级教程】windows 安装 docker 全流程
一.背景 许多小伙伴在安装 Dify 或是 RagFlow 这些工具的时候,往往会遇到一个难题,那就是 Docker 的安装. 首先,我们的PC安装的绝大部分是 Windows,但众所周知的原因,Wi ...
- FREERTOS指令测试的思考
采用freertos编程后,有必要增加指令测试的功能: 1.便于对于软件各个子模块或功能点进行测试. 2.便于对硬件各个功能点是否正常进行测试. 在裸机编程中,我们一般使用串口进行运行数据的打 ...
- 想构建一个Web学习数据库管理系统
有过爬虫的学习基础,凭借兴趣学习到 视频爬取和反向解析那里(没学完). 以及最新出来的技术 分布式多线程.selenium.scrpy 等技术 3 3 防盗链 抓取梨视频(1)_哔哩哔哩_bil ...
- 匿名内部类、lambda匿名函数表达式
a.匿名内部类的定义格式: 接口名称 对象名 = new 接口名称(){ //覆盖重写所有抽象方法 }: 一. /** * lambda匿名函数的使用 * Lambda省去面向对象的条条框框,格式由3 ...
- 深入理解Java虚拟机-线程安全与锁优化
线程安全级别 级别 描述 示例 不可变(Immutable) 对象状态不可变,天然线程安全. String.Integer 绝对线程安全 所有操作都线程安全(Java 中极少见). Vector(通过 ...
- Cobalt Strike基础
Cobalt Strike基础 Staged(有阶段) 在有阶段的执行方式中,分为Stager和Stage两个阶段 Stager(初始执行载荷): 定义:Stager是Stage 1,是一个较小的 ...
- app类型划分
app类型分为native类型,web类型,hybrid类型 一.native类型 1.优点:直接依托于操作系统,交互性最强,性能最好,功能最为强大 2.缺点:开发成本高,无法跨平台,更新缓慢,审核周 ...
- 解决 podman 容器无法在宿主机和容器内部相互访问问题的记录
解决 podman 容器无法在宿主机和容器内部相互访问问题的记录 近期在使用 podman 时,遇到了容器无法在宿主机和容器内部相互访问的问题.经过一番探索,参考了这篇文章,成功解决了该问题.在此,我 ...
- Sentinel——pull模式规则持久化
目录 pull模式规则持久化 定义数据源 定义SPI接口文件 测试 pull模式规则持久化 pull 模式的数据源(如本地文件.RDBMS 等)一般是可写入的.使用时需要在客户端注册数据源:将对应的读 ...
- 国际化利器 Intl Messageformat
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霜序 Formats ICU Message string ...