为技术博客添加评论功能:Gitalk 教程与实战

news2024/9/28 3:22:58

为技术博客添加评论功能:Gitalk 教程与实战

  • 简介
  • 安装
  • 使用
    • 创建 Github Application
      • 方式1
      • 方式2

在这里插入图片描述

主页传送门:📀 传送

简介


  Gitalk是一个基于 GitHub Issue 和 Preact 开发的评论插件。
  Gitalk是一个现代、无后端、基于GitHub Issue的评论系统,它允许网站访客使用GitHub账号登录并发表评论,所有评论数据都储存在相应的GitHub仓库中。(支持markdown语法这点对于惯于用md写博客的来说体验感蛮不错的。)

Gitalk具有以下特点

  • 集成简便:可以通过简单配置HTML标签属性或JavaScript进行初始化。
  • 无需后端服务:利用GitHub的Issues服务,不须自行搭建和维护后端。
  • 数据安全:评论数据存储在GitHub仓库,依托GitHub的数据安全性。
  • 社区互动:借助GitHub的Issue功能促进社区的形成和互动。
  • 可定制性:支持自定义Emoji、主题外观等。
  • 多语言支持:支持多种语言,包括英语和中文。
    在这里插入图片描述
    demo页面功能:
    在这里插入图片描述

安装


安装有俩种方式

  • 直接引入
    直接引入以下js,其中两行就行了
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
  <script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>

  <!-- or -->

  <link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
  <script src="https://unpkg.com/gitalk/dist/gitalk.min.js"></script>
  • npm
    不用的可以直接忽略掉
npm i --save gitalk
import 'gitalk/dist/gitalk.css'
import Gitalk from 'gitalk'

俩种方法任选其中一种方法即可。

使用


  1. 首先,您需要选择一个公共github存储库(已存在或创建一个新的github存储库)用于存储评论。
  2. 然后需要创建 GitHub Application,如果没有 点击这里申请 ,Authorization callback URL 填写当前使用插件页面的域名。
    具体步骤如下:

创建 Github Application


创建 Github OAuth Apps
点击这里申请 或者在 Github 个人页面的右上角 -> 点击头像 –> Settings –> 左侧 Developer settings –> OAuth Apps –> New OAuth App

在这里插入图片描述

在这里插入图片描述

接着填写相关信息,这里面 Application nameHomepage URLApplication description 都可以随意填写,但 Authorization callback URL 一定要写自己 Blog 的 URL,如果有域名映射,就填写映射的域名,这是这一步的关键。

在这里插入图片描述
在这里插入图片描述

创建完application 之后 再去生成Client secrets 需要复制记住这个,因为只有第一次会显示,在之后就是密文显示。如果忘记了需要重新生成。
在这里插入图片描述
得到以上的Client IDClient Secret之后,接下来就是应用到页面了

方式1


添加一个容器:

<div id="gitalk-container"></div>
<!-- Gitalk 评论 start  -->

<!-- Link Gitalk 的支持文件  -->
<link rel="stylesheet" href="https://unpkg.com/gitalk/dist/gitalk.css">
<script src="https://unpkg.com/gitalk@latest/dist/gitalk.min.js"></script> 
<div id="gitalk-container"></div>     <script type="text/javascript">
    var gitalk = new Gitalk({

    // gitalk的主要参数
		clientID: `Github Application clientID`,
		clientSecret: `Github Application clientSecret`,
		repo: `GitHub repo`, // 存储你评论 issue 的 Github 仓库名(建议直接用 GitHub Page 的仓库名)
		owner: 'GitHub repo owner', // Github 用户名
		admin: ['GitHub repo owner and collaborators, only these guys can initialize github issues'], // 这个仓库的管理员,可以有多个,用数组表示,一般写自己,里面一定要有创建者登陆github用的名字,如果填错了,评论框会报错
		id: ' location.pathname', // 页面的唯一标识,gitalk 会根据这个标识自动创建的issue的标签 一般使用页面的相对路径作为标识(要填能区分页面唯一性的字符串,比如页面链接,但是要注意长度限制,可以用md5转换一下。如果是单页应用,需要每个路由下能区分页面唯一性的字符串,并且在路由切换的时候重新设置此id)
    	distractionFreeMode: false  // 类似Facebook评论框的全屏遮罩效果
    });
    gitalk.render('gitalk-container');
</script> 
<!-- Gitalk end -->

当然,还有其他很多参数,有兴趣的话可以 点这里。

Gitalk 其他参数
number: 类型:数字,选填,页面的 issue ID 标识,若未定义number属性则会使用id进行定位。默认值:-1。

labels:类型:数组,选填,GitHub issue 的标签,默认值:Gitalk

body:类型:字符串,选填, GitHub issue 的内容,默认值:URL + HTML中meta标签中description的值。

language:类型:字符串,选填,设置语言,支持 [en, zh-CN, zh-TW]。默认值:navigator.language 或者 navigator.userLanguage。

perPage:类型:数字,选填,每次加载的数据大小,最多 100。默认值:10。

pagerDirection:类型:字符串,选填,评论排序方式,last为按评论创建时间倒叙,first为按创建时间正序。默认值:last。

createIssueManually:类型:布尔值,选填,如果当前页面没有相应的 isssue 且登录的用户属于 admin,则会自动创建 issue。如果设置为 true,则显示一个初始化页面,创建 issue 需要点击 init 按钮。默认值:false。

proxy:类型:字符串,选填,GitHub oauth 请求到反向代理,为了支持 CORS。默认值:https://cors-anywhere.herokuapp.com/https://github.com/login/oauth/access_token。

flipMoveOptions:类型:对象,选填,评论列表的动画。参考 react-flip-move

enableHotKey:类型:布尔值,选填,启用快捷键(cmd/ctrl + enter)提交评论。默认值:true。

方式2


在React使用
使用以下代码引入Gitalk组件

import GitalkComponent from "gitalk/dist/gitalk-component";

按以下方式在React中使用Gitalk组件

<GitalkComponent options={{
  clientID: "...",
  // ...
  // 设置项
}} />

设置


  • clientID String
    必须. GitHub Application Client ID.

  • clientSecret String
    必须. GitHub Application Client Secret.

  • repo String
    必须. GitHub repository.

  • owner String
    必须. GitHub repository 所有者,可以是个人或者组织。

  • admin Array
    必须. GitHub repository 的所有者和合作者 (对这个 repository 有写权限的用户)。

  • id String
    Default: location.href.
    页面的唯一标识。长度必须小于50。

  • number Number
    Default: -1.
    页面的 issue ID 标识,若未定义number属性则会使用id进行定位。
    提示:可以使用正则从 URL 中提取其中一部份作为 id。例如:location.href.match(‘/(?<=posts/)(.*)(?=/)/’)[1]

  • labels Array
    Default: [‘Gitalk’].
    GitHub issue 的标签。

  • title String
    Default: document.title.
    GitHub issue 的标题。

  • body String
    Default: location.href + header.meta[description].
    GitHub issue 的内容。

  • language String
    Default: navigator.language || navigator.userLanguage.
    设置语言,支持 [en, zh-CN, zh-TW, es-ES, fr, ru, de, pl, ko, fa, ja]。

  • perPage Number
    Default: 10.
    每次加载的数据大小,最多 100。

  • distractionFreeMode Boolean
    Default: false。
    类似Facebook评论框的全屏遮罩效果.

  • pagerDirection String
    Default: ‘last’
    评论排序方式, last为按评论创建时间倒叙,first为按创建时间正序。

  • createIssueManually Boolean
    Default: false.
    如果当前页面没有相应的 isssue 且登录的用户属于 admin,则会自动创建 issue。如果设置为 true,则显示一个初始化页面,创建 issue 需要点击 init 按钮。

  • proxy String
    Default: https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token.
    GitHub oauth 请求到反向代理,为了支持 CORS。

  • flipMoveOptions Object
    Default:

  {
    staggerDelayBy: 150,
    appearAnimation: 'accordionVertical',
    enterAnimation: 'accordionVertical',
    leaveAnimation: 'accordionVertical',
  }

评论列表的动画。

  • enableHotKey Boolean
    Default: true.
    启用快捷键(cmd|ctrl + enter) 提交评论.

在这里插入图片描述

  如果喜欢的话,欢迎 🤞关注 👍点赞 💬评论 🤝收藏  🙌一起讨论
  你的支持就是我✍️创作的动力!					  💞💞💞

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

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

相关文章

基于单片机的程控电源显示控制电路设计

摘要 : 介绍了基于单片机程控电源显示控制电路的硬件设计和软件实现 &#xff0c; 该设计可以实现程控电源的输出显示和手动控制功能。 实践验证 &#xff0c; 该设计具有很好的使用效果和工程价值 。 关键词 : 程控电源 ; 显示控制 ; 单片机 0 引言 程控电源广泛地应用在…

python怎么写乘法表

代码如下&#xff1a; 代码详解&#xff08;为了让自己理解&#xff09;&#xff1a; for i in range(1,10):# print(i,end )for j in range(1,i1):print(%s*%s%s %(i,j,i*j),end )print() 1. for i in range(1,10) 这是一个for循环语句&#xff0c;range&#xff08;&…

无线数传模块是啥东西?

一 、 产品概述 无线数传模块是用来替代传统数据采集、通讯、控制布线的占用工业级模块。 无线数传模块一款工作在免费频段、5000m传输距离模块发射功率158mW、具有高稳定性、低功耗、高性价比、工业级特点。 模块具有多种传输距离规格可供选择&#xff0c;根据应用场景需要&am…

【python】基础一

目录 数据类型数据类型转换-整数/浮点数/字符串标识符运算符字符串扩展字符串拼接字符串格式化字符串精度字符串格式化-快速写法对表达式进行格式化字面量变量数据输入 数据类型 查看数据类型&#xff1a;type(数据) #输出结果&#xff1a;classint> print(type(10))数据类型…

自动生成依赖清单:pipreqs,Python项目的救星

文章目录 **自动生成依赖清单&#xff1a;pipreqs&#xff0c;Python项目的救星**背景&#xff1a;为何选择pipreqs&#xff1f;pipreqs是什么&#xff1f;如何安装pipreqs&#xff1f;库函数使用方法场景应用场景一&#xff1a;新项目初始化场景二&#xff1a;更新现有项目依赖…

继Ollama之后,Go在AI领域再下一城

AI isnt a thing; its a magnifier of a thing. And that thing is human creativity. 在AI领域&#xff0c;最火的使用Go开发的项目莫过于Ollama项目了&#xff0c;但近期有一个项目也吸引了Gopher眼球&#xff0c;它就是fabric。叫fabric的项目太多&#xff0c;这个fabric又是…

keil在debug时,watch窗口中变量不变化的解决方法

在DEBUG时&#xff0c;我们可能遇到自己定义的变量在watch窗口中一直是一个固定值&#xff0c;不会变化&#xff0c;我们只需要在debug时点开view勾选上最后一个选项periodic window update即可

airflow调度时间详解

⭐️ airflow调度概述 Apache Airflow 是一个开源的工作流调度和监控平台&#xff0c;广泛用于数据工程、ETL&#xff08;提取、转换、加载&#xff09;管道以及各种自动化任务。下面我将详细说明 Airflow 的调度算法。 1. DAG&#xff08;有向无环图&#xff09; Airflow 的…

萌拉数据需要下载吗,萌啦数据使用需不需要下载

在数字化浪潮席卷全球的今天&#xff0c;数据成为了驱动企业决策、优化产品服务、精准市场营销的关键要素。而提到数据处理与分析的利器&#xff0c;“萌拉数据”这一名字逐渐在业界崭露头角。面对这样一个功能强大的数据平台&#xff0c;不少用户心中或许会产生疑问&#xff1…

前端:内嵌微信扫码登陆在chrome浏览器失败

前端&#xff1a;内嵌微信二维码登录。 官方文档&#xff1a; 关于微信快速登录功能的说明 | 微信开放文档 按照官方文档书写后&#xff0c;二维码出现在了页面上。但是扫码登录时&#xff0c;浏览器控制台报错 Unsafe JavaScript attempt to initiate navigation for frame w…

无需多部备用机,云手机方便又便宜!

云手机&#xff0c;是云计算技术的又一创新应用&#xff0c;它通过在云服务器上虚拟出带有原生安卓操作系统的手机实例&#xff0c;为用户提供了一种全新的手机使用体验。无需携带多部手机&#xff0c;只需通过云手机&#xff0c;便可轻松实现多账号管理、应用运行及数据存储等…

用这个项目管理工具创建管理表,轻松实现项目管理!

在项目管理中&#xff0c;时间表不仅仅是一个简单的计划工具&#xff0c;而是确保项目按时完成的关键 许多项目经理和团队成员在推进项目时&#xff0c;常常因为缺乏明确的时间表而陷入混乱&#xff0c;导致进度拖延、资源浪费&#xff0c;甚至项目失败。 那么&#xff0c;如何…

无人机遥控器里的接收器工作原理解析!

无人机遥控器中的接收器工作方式主要基于无线信号传输技术 信号发射 遥控器上的发射器将用户的操作指令&#xff08;如推动操纵杆的动作&#xff09;转化为无线电信号。这些信号通过特定的频率&#xff08;如常用的2.4GHz&#xff09;在空气中传输。 信号接收 无人机上的接…

2024.8.23(docker)

一、打包传输 1、打包 [rootdocker ~]# docker save -o centos.tar centos:latest [rootdocker ~]# ls 2、删除镜像 [rootdocker ~]# docker ps -all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 372f7f49e6df …

固废检测算法实际应用方案固废检测算法源码解析

固废检测算法是利用机器视觉和深度学习技术&#xff0c;对地面上的垃圾进行自动识别、分类和定位的一种算法。这类算法在环境管理、智慧城市、自动化清洁等领域具有广泛的应用前景。以下是对固废检测算法的详细介绍&#xff1a; 一、算法原理 固废检测算法主要基于深度学习和计…

小米14的射频芯片高通SDR753全景图

这周末,除非外面下钞票,否则谁也拦不住我玩《黑神话悟空》(附:两款可以玩转悟空的显卡推荐) 天玑助力联发科力压高通~探秘MTK 5G旗舰智能手机SoC芯片——MT6989(天玑9300) 原创 芯愿景软件 集成电路大数据平台 2024年05月08日 19:18 北京 封装图(正面) 封装图

第21周:中文文本分类-Pytorch实现

目录 前言 一、前期准备 1.1 数据示例 1.2 文本分类的流程图 1.3 导入所需库 1.4 加载数据 二、数据预处理 2.1 构建词典 2.2 生成数据批次和迭代器 三、模型构建 3.1 搭建模型 3.2 初始化模型和超参数定义 3.3 训练函数与评估函数定义 四、训练模型 4.1 拆分数…

整合sentinel遇到的小问题

1.运行jar包 &#xff0c;端口为默认8080 正确命令 java -Dserver.port8090 -Dcsp.sentinel.dashboard.server127.0.0.1:8090 -Dproject.namesentinel-dashboard -jar sentinel-dashboard-1.8.6.jar -D这些指令要在 -jar前面 在宝塔部署时&#xff0c;直接复制到运行命令后…

深入探索分布式任务调度框架:MySQL实现高效锁机制

本文主要介绍项目中怎么使用 MySQL 实现分布式锁的 背景 假如我们现在要做一个高性能、可扩展的分布式任务调度框架&#xff0c;要怎么设计呢&#xff1f;下面是我之前自己设计的一个架构图。 为了方便后续的分布式锁的设计&#xff0c;我们大致描述下各个角色都做了哪些事情…

搭建springboot项目,并解决项目出现红色J问题

搭建springboot的2种方式 搭建springboot项目有多种方式&#xff0c;这里简单介绍2种&#xff0c;看您使用哪个更方便。 第一种&#xff1a;在idea里创建 第二种&#xff0c;在官网创建下载 spring官网地址&#xff1a;https://start.spring.io/ 解决项目出现红J问题 搭建好…