NoteZ_技术博客 NoteZ_技术博客
🏠 首页
  • 📚 Web技术
  • 📋 Npm笔记
  • 📑 Markdown
  • 📄 Git笔记
  • 📝 Nginx文档
  • 📓 Linux文档
  • 📖 技术文档
  • 📜 其他文档
  • 🧊 NodeJs
  • 🎡 Express
  • 🔥 Rust
  • 🎉 Koa2
  • 🍃 MongoDB
  • 🐬 MySql
  • 🥦 Oracle
  • 🍁 Python
  • 🍄 JavaScript
  • 🌰 CSS
  • 🧄 HTML
  • 🥑 Canvas
  • 🌽 Nuxt
  • 🍆 React
  • 🥜 Vue
  • 🧅 TypeScript
  • 🌶️ AI
  • 📘 分类
  • 📗 标签
  • 📙 归档
⚜️ 在线编辑 (opens new window)
  • 📁 站点收藏
  • 📦 前端组件库
  • 📊 数据可视化
  • 🌈 开源插件
  • 🎗️ 关于我
  • 🔗 友情链接
GitHub (opens new window)

NoteZ_技术博客

前端界的小学生
🏠 首页
  • 📚 Web技术
  • 📋 Npm笔记
  • 📑 Markdown
  • 📄 Git笔记
  • 📝 Nginx文档
  • 📓 Linux文档
  • 📖 技术文档
  • 📜 其他文档
  • 🧊 NodeJs
  • 🎡 Express
  • 🔥 Rust
  • 🎉 Koa2
  • 🍃 MongoDB
  • 🐬 MySql
  • 🥦 Oracle
  • 🍁 Python
  • 🍄 JavaScript
  • 🌰 CSS
  • 🧄 HTML
  • 🥑 Canvas
  • 🌽 Nuxt
  • 🍆 React
  • 🥜 Vue
  • 🧅 TypeScript
  • 🌶️ AI
  • 📘 分类
  • 📗 标签
  • 📙 归档
⚜️ 在线编辑 (opens new window)
  • 📁 站点收藏
  • 📦 前端组件库
  • 📊 数据可视化
  • 🌈 开源插件
  • 🎗️ 关于我
  • 🔗 友情链接
GitHub (opens new window)
  • Web技术

  • Git笔记

  • Linux文档

  • Markdown

  • Nginx文档

  • Npm笔记

  • 技术文档

    • axios携带cookie
    • Echarts自定义提示框tooltip样式(包括提示框标题不固定)
    • gitee 仓库初始化
    • GitHub + jsDelivr + TinyPNG+ PicGo 打造稳定快速、高效免费图床
    • GitHub Actions 定时运行代码:每天定时百度链接推送
    • GitHub Actions 实现自动部署静态博客
    • GitHub加速下载项目的方法
    • GitHub高级搜索技巧
    • js以当前时间为基础,便捷获取时间(最近2天,最近1周,最近2周,最近1月,最近2月,最近半年,最近一年,本周,本月,本年)
    • JupyterLab二次开发环境配置以及踩的一些坑(笔记)
    • linux 虚拟机 ping 域名时,提示“未知的名称或服务原因分析“
    • Node.js中间件 - Multer详解
    • node.js使用supervisor或nodemon进行调试热更新
    • NodeJs的压缩文件之 - 模块 archiver 用法示例
    • Pdf数据解析
    • sh文件出现错误:Permission denied解决办法
    • vscode命令行以管理员身份运行
    • webpack 的简单使用
    • Web前端Vue离线存储之 - localForage.js使用方法
    • windows 多版本管理工具 nvm-windows
    • windows 如何配置 pip 镜像
    • WX小程序开发总结
    • Xshell 6 提示 “要继续使用此程序,您必须应用最新的更新或使用新版本”
    • yaml语言教程
    • 使用 SwitchHost 修改 host 文件为 GitHub 提速
    • 使用Gitalk实现静态博客无后台评论系统
      • 前言
      • 准备
      • 实现
        • 安装
        • 使用
        • BUG修复
    • 几款主流好用的富文本编辑器
    • 如何使用 babel 对es6语法进行转码
    • 如何使用 github pages 搭建你的个人站点
    • 如何使用openvscode-server搭建一个vscode代码编辑器
    • 如何配置 GitHub 页面的发布源
    • 如何配置GitHub登录账号密码,进行免密push仓库文件
    • 解决GitHub提交代码成功后并不显示绿格子问题
    • 解决百度无法收录搭建在GitHub上的个人博客的问题
    • VuePress 配置 MarkDown 文件目录.md
    • GitHub无法打开或加载慢的解决方法
    • win10 通过修改 hosts 提升github访问速度
    • Echarts实现自适应
    • gulp项目中ReferenceError_ primordials is not defined报错解决方法
    • 使用libreoffice将word转化成pdf
    • onlyoffice+vue实现在线预览在线编辑
    • Stable-Diffusion-WebUI 搭建使用教程
    • wind10通过安装nvm切换node版本
    • 解决虚拟机中ip地址总是自动变化办法
    • Git配置之邮箱设置
    • Echarts重写tooltip(提示框)代码
    • 使用 frp 实现内网穿透
    • win10 开机自启动 frp 实现内网穿透
    • Express 与 vue3 使用 sse(event-stream)实现消息推送并使用 nginx 转发
    • Linux 中使用 rsync 同步文件目录教程
    • Gitea数据备份与还原
  • 其他文档

  • 前端开发
  • 技术文档
NoteZ
2022-05-09
目录

使用Gitalk实现静态博客无后台评论系统

# 使用Gitalk实现静态博客无后台评论系统

# 前言

Gitalk,一个基于 Github Issue 和 Preact 开发的评论插件。

下面我们来用它在vuepress搭建的博客中搭建评论区吧

# 准备

使用一个新的东西首先当然是要了解它

Gitalk demo:https://gitalk.github.io/ (opens new window)

Gitalk github:https://github.com/gitalk/gitalk (opens new window)

# 实现

如何实现?最好的方法我认为是看官方文档 (opens new window),这里我只是记录一下实现的步骤。

使用一个别人已经开发好的 vuepress-plugin-comment (opens new window) 插件来帮助我们把Gitalk应用到vuepress搭建的静态博客。

# 安装

npm install --save vuepress-plugin-comment
1

# 使用

options的配置和Gitalk的配置相同

module.exports = {
  plugins: [
    [
      'vuepress-plugin-comment',
      {
        choosen: 'gitalk', 
        options: {
          clientID: 'GitHub Application Client ID',
          clientSecret: 'GitHub Application Client Secret',
          repo: 'GitHub repo',
          owner: 'GitHub repo owner',
          admin: ['GitHub repo owner and collaborators, only these guys can initialize github issues'],
          distractionFreeMode: false 
        }
      }
    ]
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

需要 GitHub Application,如果没有 点击这里申请 (opens new window),Authorization callback URL 填写当前使用插件页面的域名。

申请完成就会得 Client ID 和 Client Secret。然后把对应参数填写到配置中,例:

module.exports = {
  plugins: [
    [
      'vuepress-plugin-comment',
      {
        choosen: 'gitalk', 
        options: {
          clientID: 'a6e*******4709b88b',
          clientSecret: 'f0e***************beb8b2d54d7241',
          repo: 'blog', // GitHub 仓库
          owner: 'NoteZ', // GitHub仓库所有者
          admin: ['NoteZ'], // 对仓库有写权限的人
          distractionFreeMode: false 
        }
      }
    ]
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

配置好之后重启项目就发现页面上多了一个评论区,说明评论功能实现啦。但还是有一些bug,继续完善它~

# BUG修复

评论区与博客样式不匹配

解决办法:新增全局样式文件.vuepress/styles/index.styl,写入样式

#vuepress-plugin-comment
  max-width $contentWidth
  margin 0 auto
  padding 2rem 2.5rem
  @media (max-width: $MQNarrow)
    padding 2rem
  @media (max-width: $MQMobileNarrow)
    padding 1.5rem
1
2
3
4
5
6
7
8

评论区出现 Error: Validation Failed.

问题分析:当页面 链接过长 或 存在中文链接,导致整个链接字符串长度超过50时,会造成请求issues接口失败,出现422状态码。(中文链接会自动转码,变得很长,id参数默认取的是链接,长度不能超过50)

解决办法:手动设置id取值,限制长度不超过50。

{
 choosen: 'gitalk', 
 options: {
   ...
   id: "<%- (window.location.origin + (frontmatter.to.path || window.location.pathname)).slice(-50) %>", //  页面的唯一标识,长度不能超过50
   title: "「评论」<%- document.title %>", // GitHub issue 的标题
   labels: ["Gitalk", "Comment"], // GitHub issue 的标签
   body:"<%- document.title %>:<%- window.location.origin + (frontmatter.to.path || window.location.pathname) %>" // GitHub issue 的内容
 }
}
1
2
3
4
5
6
7
8
9
10

访问变量时,如 $frontmatter 或 window等,请使用 EJS 语法。因为在配置中不能使用回调函数,会被vuepress过滤,因此使用 EJS 语法。 ——插件作者文档说明

切换页面后评论区内容还是上一个页面的评论

解决:id在获取path时使用 frontmatter.to.path,插件内置了 ``frontmatter.from、frontmatter.to`。

{
 choosen: 'gitalk', 
 options: {
   ...
   id: "<%- (window.location.origin + (frontmatter.to.path || window.location.pathname)).slice(-50) %>", //  页面的唯一标识,长度不能超过50
   title: "「评论」<%- document.title %>", // GitHub issue 的标题
   labels: ["Gitalk", "Comment"], // GitHub issue 的标签
   body:"<%- document.title %>:<%- window.location.origin + (frontmatter.to.path || window.location.pathname) %>" // GitHub issue 的内容
 }
}
1
2
3
4
5
6
7
8
9
10
#Gitalk
上次更新: 2024/01/30, 00:35:17
使用 SwitchHost 修改 host 文件为 GitHub 提速
几款主流好用的富文本编辑器

← 使用 SwitchHost 修改 host 文件为 GitHub 提速 几款主流好用的富文本编辑器→

最近更新
01
Gitea数据备份与还原
03-10
02
Linux 中使用 rsync 同步文件目录教程
03-10
03
Linux 使用 rsync 互相传输同步文件的简单步骤
03-08
更多文章>
Theme by Vdoing | Copyright © 2019-2025 NoteZ,All rights reserved | 冀ICP备2021027292号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式