VuePress V1 添加 Vssue 评论功能

news2024/11/18 16:51:28

文章目录

  • 前言
  • 选型
  • 集成
    • Vssue
    • 安装
    • 创建 Github OAuth App
    • 配置插件
    • 使用 Vssue 组件
    • 自动创建 Issue
  • 小结
  • 参考文献

前言

我的第二本开源电子书《后台开发命令 365》上线啦。

使用 VuePress 将之前记录的后台常用 Linux 命令博文整理成一个系统的开源电子书,方便阅读,希望能够帮到大家。

为了让静态站点具有互动能力,评论功能必不可少。评论功能为用户提供了参与和互动的机会,使他们能够表达观点、提出问题、相互交流,进而帮助静态站点持续改进。

尽管静态网站本身不支持后端交互和数据库存储,但可以使用第三方服务或静态网站生成器的插件来实现评论功能。

选型

为静态网站添加评论功能,市面上有很多评论系统可供选择,且大部分都是开源的。按照 Github star 数排名,下面是常用的插件列表。

  • Utterances

Stars 8k+。

Utterances 是一个开源评论系统,也是基于 GitHub Issue 的。它的特点是可以直接将评论存储在你的仓库中,无需使用第三方服务,同时支持 Markdown 语法和社交媒体集成。

  • Gitalk

Stars 6.6k+。

Gitalk 是一个基于 GitHub Issue 和 Preact 构建的开源评论系统。它使用 GitHub 登录,将评论存储在仓库的 Issue 中,使评论和代码更加紧密地集成在一起。

  • Giscus

Stars 4.8k+。

Giscus 是一个基于 GitHub Discussions 的开源评论系统,提供了对静态站点的无后端评论支持。它支持多种语言、Markdown 渲染和社交媒体集成,并且可以自定义外观和行为。

  • Gitment

Stars 4k+。

Gitment 是一个基于 GitHub Issues 的开源评论系统,它可以在前端使用,而不需要任何服务器端实现。

  • Valine

Stars 2.1k+。

Valine 是一款快速、简洁且高效的无后端评论系统,适用于静态站点和博客。

Valine 诞生于2017年8月7日,它使用 LeanCloud 存储评论数据,理论上支持但不限于静态博客,目前已有 Hexo、Jekyll、Typecho、Hugo、Ghost、Docsify 等博客和文档程序在使用 Valine。

  • Waline

Stars 1.5k+。

Waline 是一个基于 LeanCloud 的无后端开源评论系统,具有简洁美观的界面和良好的性能。它支持集成社交媒体登录、自定义表情、敏感词过滤和邮件通知等功能。

  • Vssue

Stars 700+。

Vssue 是一个适用于静态站点的由 Vue 驱动基于 Issue 的开源评论系统。

Vssue 支持多种代码托管平台(如 GitHub、GitLab、Bitbucket)的评论系统。它通过 OAuth 2.0 进行用户认证,并将评论数据存储在所选平台的 Issue 中。

  • Disqus

Disqus 是一个被广泛使用的第三方评论系统,适用于各种网站类型。它提供了强大的功能,包括社交媒体集成、邮件通知、嵌入式评论等。Disqus 支持登录和评论的匿名访客,同时也有管理评论的后台管理界面。

Disqus 是一个商业评论系统,暂未开源。提供免费的基础评论服务和付费的增值服务。为静态站点添加评论功能,免费的基础评论服务足够我们使用。

因为开源电子书《后台开发命令 365》托管在 Github,其评论最好存储在同一个地方,所以基于 Github 的评论系统的插件是我的优先选择。其次,因为评论在语义上并非 Issue,所以我想选择基于 Github Discussions 的 Giscus,将其集成到开源书籍《后台开发命令 365》。

集成

Vssue

期望是美好的,现实是骨感的。在网上搜索了一番,关于 Giscus 集成到 VuePress 都是关于 VuePress V2 的教程,没有找到 VuePress V1 如何集成 Giscus,也没有找到相关的插件。

相反,网上关于 VuePress V1 集成评论功能的相关资料介绍较多是 Vssue。无奈之下,我也尝试使用 Vssue 来为我的开源书籍添加评论功能。后续升级到 VuePress V2 再使用 Giscus。

在 VuePress 官方仓库 Awesome VuePress 收录的评论插件中,我们可以找到 @vssue/vuepress-plugin-vssue。该插件是 Vssue 为 VuePress 提供的一个插件,在 VuePress 中快速使用 Vssue。

安装

通过 npm 安装插件和你需要使用的 API 包 :

npm install @vssue/vuepress-plugin-vssue
npm install @vssue/api-github-v3

这里我使用的是 Github V3。

V3 与 V4 最大的差别就是:

  • V3 可以不登录浏览评论,但 API 有调用频率限制
  • V4 要求登陆后才能浏览评论

创建 Github OAuth App

Vssue 支持通过 Github、Gitlab、Bitbucket、Gitee 或 Gitea 的 Issue 系统来为你的静态页面提供评论功能,你可以选择其中之一来使用。

因为我的开源书籍托管在 GitHub,要想使用 Github 的 Issue 来存储评论,那么需要在 Github 创建一个新的 OAuth App。

创建入口:头像 > Settings > Developer settings > OAuth Apps。

然后点击 New OAuth App。

最后将 Homepage URL 和 Authorization callback URL 设置为我的网站 URL。

在这里插入图片描述

创建完成后,我们把 Client ID 和 Client secret 保存下来,等下会用到。

在这里插入图片描述

配置插件

通过 VuePress 官方文档可以查看使用插件的详细方法。

在 .vuepress/config.js 中,配置下 vssue 插件。

// .vuepress/config.js

module.exports = {
  plugins: [
    [
      '@vssue/vuepress-plugin-vssue',
      {
        // 设置 `platform` 而不是 `api`
        platform: 'github',
          
        // 其他的 Vssue 配置
        owner: 'dablelv',    // 仓库的拥有者的名称
        repo: 'backend-cmd', // 存储评论的仓库的名称
        clientId: '00e71455ec1a9e6ac134', // 刚保存下来的 Client ID
        clientSecret: 'YOUR_CLIENT_SECRET', // 刚才保存下来的 Client secrets
      }
    ]
  ]
}

其中 platform 是代码托管平台而不是对应的 API 包。

@vssue/vuepress-plugin-vssue 会自动根据你设置的 platform 为你解析对应的 API 包:

platform github - api 包 @vssue/api-github-v3
platform github-v4 - api 包 @vssue/api-github-v4
platform gitlab - api 包 @vssue/api-gitlab-v4
platform bitbucket - api 包 @vssue/api-bitbucket-v2
platform gitee - api 包 @vssue/api-gitee-v5
platform gitea - api 包 @vssue/api-gitea-v1

关于插件的其他配置,可以访问 Vssue 配置参考了解。

使用 Vssue 组件

Vssue 已经注册为 Vue 组件,你可以在你的 VuePress Markdown 文件中直接使用它。

<!-- README.md -->

<Vssue/>

如果想指定 Issue 的 Title,可以按照下面这样子指定。

<Vssue :title="$title" />

缺省情况下每篇文章的 Issue 由其第一个标题再加上项目的 title(config.js 中的 title)组成。

执行npm run docs:build重新构建,效果如下:

在这里插入图片描述
注意,首次评论前,需要为每篇文章手动点击 Click to create issue创建 Issue。

自动创建 Issue

如果为每篇文章(Markdown 文件)手动创建 Issue 启动评论的话,这种做法显然低效欠妥,不是我们想要的。

好在 Vssue 有一个配置选项 autoCreateIssue。

autoCreateIssue 缺省值为 false。如果 autoCreateIssue 设置为 true,在对应的 Issue 不存在时,Vssue 会自动尝试为你创建 Issue。注意,若你当前没有登录,则 Vssue 会自动跳转到平台的认证页面。

我们找到 config.js 在插件@vssue/vuepress-plugin-vssue配置中,手动添加如下配置项:

autoCreateIssue: true // 自动创建 Issue

这样我们就不用每次每次评论前去点击 Click to create issue 了。

小结

本文介绍了使用 Vssue 为 VuePress V1 生成的静态文档网站添加评论功能的详细过程,同时列举了可用的相关评论系统以及选择 Vssue 的原因。

后续如果再使用 VuePress 生产静态网站,那么将使用 VuePress V2 版本,到时 V2 应该已经正式发布并且稳定了。届时,个人会倾向于使用 Giscus 作为站点的评论系统,因为其基于 GitHub Discussions,语义上更加贴切呢。

最终的效果,请查阅我的第二本开源电子书《后台开发命令 365》,欢迎大家斧正指导。


参考文献

VuePress
@vssue/vuepress-plugin-vssue
VuePress开启评论、VuePress评论功能 - CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 周赛 346(2023/05/21)仅 68 人 AK 的最短路问题

本文已收录到 AndroidFamily&#xff0c;技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 提问。 LeetCode 单周赛第 345 场 体验一题多解的算法之美 单周赛 345 概览 T1. 删除子串后的字符串最小长度&#xff08;Easy&#xff09; 标签&#xff1a;栈 T2. 字典序最小回…

Sui基金正在招聘亚太地区市场经理,期待您的加入

Sui基金会致力于支持Sui网络的开发、增长和推广使用。Sui是基于第一原理重新设计和构建而成的L1公有链&#xff0c;旨在为创作者和开发者能够构建从游戏到金融的独特Web3体验。 Sui基金会三大去中心化原则&#xff1a;拥抱透明且公平的竞争环境、公开沟通以建立信任的文化&…

传染病学模型 | Matlab实现SIR传染病学模型 (SIR Epidemic Model)

文章目录 效果一览基本描述模型介绍程序设计参考资料效果一览 基本描述 传染病学模型 | Matlab实现SIR传染病学模型 (SIR Epidemic Model) 模型介绍 SIR模型是一种基本的传染病学模型,用于描述一个人群中某种传染病的传播情况。SIR模型假设每个人可以被感染,感染后会进入恢复…

Kibana:创建你的第一个仪表板

了解从你自己的数据创建仪表板的最常用方法。 本教程将从分析师查看网站日志的角度使用示例数据&#xff0c;但这种类型的仪表板适用于任何类型的数据。 完成后&#xff0c;你将全面了解示例 Web 日志数据。 在本次的展示中&#xff0c;我将使用最新的 Elastic Stack 8.7.1 来…

百分比图:解读数据,驱动业务增长

在当今信息爆炸的时代&#xff0c;数据成为了各行各业决策的重要依据。而在数据展示的众多形式中&#xff0c;百分比图凭借其简洁直观的表达方式和强大的信息传递能力&#xff0c;成为了企业和组织不可或缺的工具。本文将带您一同探索百分比图的魅力&#xff0c;揭示其在决策智…

介绍一下全链路压测平台的相关内容

随着互联网技术的不断发展&#xff0c;越来越多的企业开始依赖互联网来实现业务的发展和增长。而对于这些企业而言&#xff0c;如何保证他们的业务在高并发、高负载的情况下依然能够正常运行&#xff0c;是非常重要的一个问题。为了解决这个问题&#xff0c;企业可以使用全链路…

Vue3+ElementPlus报错集锦

目录 1、导入TS类型报错 2、使用类型报错 3、Vue3引入文件爆红且不提示 4、为defineAsyncComponent引入的component子组件设置类型 1、导入TS类型报错 &#xff08;1&#xff09;报错信息 import type { FormInstance, FormRules } from element-plus 模块 ""e…

精彩回顾 | Fortinet Accelerate 2023·中国区巡展杭州站

Fortinet Accelerate 2023中国区巡展 5月18日&#xff0c;Fortinet Accelerate 2023中国区巡展来到杭州&#xff0c;Fortinet携手太平洋电信、亚马逊云科技等云、网、安合作伙伴&#xff0c;与各行业典型代表客户&#xff0c;就网安融合、网安协同、工业互联网安全、云安全、网…

LC-1080. 根到叶路径上的不足节点(递归DFS)

1080. 根到叶路径上的不足节点 难度中等126 给你二叉树的根节点 root 和一个整数 limit &#xff0c;请你同时删除树中所有 不足节点 &#xff0c;并返回最终二叉树的根节点。 假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 limit&#xff0c;则该…

网络安全有什么学习误区?

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…

【STM32系列】基础操作及LED测试

【STM32系列】基础操作及LED测试 资源常用网站整理基本操作恢复出厂设置 欢迎收看由咸鱼菌工作室出品的STM32系列教程。本篇内容主要是开发板的基础操作 资源 首先给大家推荐一些学习micropython的资源网站&#xff0c;文字版直接去我的博客里面翻一下 以下是一些Micropyth…

redis问题汇总

redis的优点 读写性能优异。十万/s的量级&#xff1b; 支持数据持久化。AOF,RDB 支持丰富的数据类型&#xff1b; 支持集群&#xff0c;可以实现主从复制&#xff0c;哨兵机制迁移&#xff0c;扩容等 缺点&#xff1a; 因为是基于内存的&#xff0c;所以虽然redis本身有key过期…

单片机如何通过PWM脉冲控制电机转速?

通过单片机实现对电机自动化控制已经在各行各业得到广泛应用&#xff0c;电机转速灵活使用方便&#xff0c;控制性能好&#xff0c;易于大范围调速。单片机通过PWM脉冲控制电机转速&#xff0c;在现代化生产中起到重要作用。 单片机是一种集成电路芯片&#xff0c;包括处理器、…

传染病学模型 | Matlab实现SIS传染病学模型 (SIS Epidemic Model)

文章目录 效果一览基本描述模型介绍程序设计参考资料效果一览 基本描述 传染病学模型 | Matlab实现SIS传染病学模型 (SIS Epidemic Model) 模型介绍 SIS模型是一种基本的传染病学模型,用于描述一个人群中某种传染病的传播情况。SIS模型假设每个人都可以被感染,即没有免疫力,…

PHP中常见的错误与异常处理总结大全

前言 当我们开发程序时&#xff0c;程序出现问题是很常见的&#xff0c;当出现了异常与错误我们该如何处理呢&#xff1f;本文将详细给大家介绍PHP错误与异常处理的相关内容&#xff0c;分享出来供大家参考学习&#xff0c;下面话不多说了&#xff0c;来一起看看详细的介绍&am…

【发电厂用JDHF-1010 合闸(分闸)监测继电器(220V/110V) JOSEF约瑟】

■JDHF-1000合闸(分闸)监测继电器主要用于各种保护和自动控制装置中&#xff0c;作为断路器操作运行状态的监测继电器。■交直流两用■监测继电器具有高内阻特性&#xff0c;可适应各种框架式断路器的合分回路。■快速导轨安装结构&#xff0c;适合各种导轨安装。■螺钉压接式端…

软件详细设计总复习(三)【太原理工大学】

题型及分值&#xff1a; 选择 30 分&#xff0c;填空 20 分&#xff0c; 判断 10 分&#xff0c;简答 20 分&#xff0c;综合设计 20 分。 文章目录 三、行为型模式1. 命令模式2. 迭代器模式3. 观察者模式4. 状态模式5. 策略模式 三、行为型模式 1. 命令模式 举个例子&#x…

面试踩坑合集

文章目录 前言一、String1、String的常用方法 二、多线程1、有几种线程池 三、集合1、hashmap和hashtable的区别2、红黑树转链表的条件 四、SpringMvc1、springMVC的处理流程 五、Sql1、把班级看做一张表&#xff0c;男女平均年纪和人数总数&#xff0c;根据性别分组2、Mysql事…

Kelvin和Rossby波 Part-1(简要介绍)

Equatorial Kelvin and Rossby Waves 赤道Kelvin和Rossby波&#xff1b;在该部分简要介绍 Kelvin waves和Rossby waves是海洋对西风突发等外界作用力变化的调整方式。这种调整是通过受重力、科氏力f以及科氏力的南北变化 ∂ f / ∂ y β \partial f/\partial yβ ∂f/∂yβ影响…

品优购项目06课后作业--产品详情页,text-align:justify属性无效,

文章目录 0.编程中出现的问题0.1 html文字字数不一致的布局方法&#xff0c;也就是如何实现文字俩端对齐&#xff1f;0.2 text-align:justify;属性无效怎么办&#xff1f; 1.结构分析1.1 快捷导航栏header头部模块nav导航模块1.2 主产品模块1.3 产品详情模块 2.代码部分2.1 主产…