分类
标签
AI AionUi AI工作台 AI模型交互 Android CSS DevOps Dioxus Docker Docker Swarm ECS Electron Flutter Frontend Go Grok Hono HonoX HTML5 IoT IPC通信 IPFS Islands 架构 JavaScript JAX K3s Kamal Kubernetes n8n Pagefind React React Native Reactive Rust SaaS Serverless SQLite Tauri TF-IDF Transformer Twitter TypeScript UI Framework Vue Wails Web API WebAssembly WebSocket Web应用 Web服务器 Web框架 不可变数据 云原生 代码重构 信息流 倒排索引 全文检索 全栈框架 最佳实践 分布式 前端优化 动画 博客 后端 图片 存储 定时器 容器化 容器编排 小程序 工作流 工具 工具开发 工程化 并发 开发工具 异步 微服务 快速开发 思考 性能优化 技术选型 推荐系统 搜索引擎 效率 数据可视化 数据处理 数据流转 数据结构 无障碍服务 机器学习 架构 架构设计 框架 模板 流式处理 深度学习 游戏开发 状态管理 用户体验 看板 移动端 算法 组件 缓存 编译器 自动化 设计模式 负载均衡 跨平台 跨平台开发 路由 边缘计算 运维 部署 重构 集群管理 静态网站
721 字
4 分钟
手把手教你使用 issue 作为博客评论系统
自从上周在阮一峰的 每周分享第 60 期 看到了可以将 GitHub 的 issue 当作评论系统,插入第三方网页的 JS 库——utterances。我就对此“魂牵梦绕”。个人博客使用的是VuePress。
TLDR (不多废话,先看效果)
之前是使用了 Valine 作为博客的评论系统。

下图是改为 utterances 风格。

utterances 介绍及使用
utterances 是基于github issue,拥有多种主题的开源免费小组件。
1.首先我们所需要的 github 存储库必须是公开的,而不是私有的,这样我们的读者才可以查看以及发表评论。
2.我们必须在 github 上进行安装 utterances,首先我们访问 utterances应用程序 然后点击 Install 按钮进行安装。 
3.在这里可以选择可以关联的存储库,可以选择我们所拥有的库(也包括未来建立的库)或者某一个仓库,这里我们只选择某一个需要进行评论的库,这样比较好。 
4.安装完成即可,随后我们访问utterances应用程序就不再是安装而是是执行配置项目。


5.此时服务端配置已经完成,现在我们可以进行客户端的操作,也就是 blog 端。在blog端我们只需要添加以下这段脚本就可以直接运行。
<script
// 加载的客户端脚本
src="https://utteranc.es/client.js"
// repo 就是访问的仓库,格式 用户名/仓库名
// 个人就是 repo="wsafight/personBlog"
repo="[ENTER REPO HERE]"
// 选定的当前blog 与 issue 之间的关系
// 个人使用的是不会自动创建的 issue-number,每个issue都有自己的number。该选项是使用特定的issue
issue-term="pathname"
// 主题为 github-light 还有其他主题可以选择
theme="github-light"
crossorigin="anonymous"
async>
</script>6.因为我的博客是采用 VuePress,所以在 markdown 中是无法使用 script 脚本的。我们就需要编写写一个 vue 组件。(组件的文件路径为 [blog name]/.vuepress/components/)
// Utterances 组件
<template>
<div id="comment"></div>
</template>
<script>
export default {
name: 'Utterances',
props: {
// 传入的 issue-number
id: Number
},
methods: {
initValine () {
// 建立脚本以及属性
const utterances = document.createElement('script');
utterances.type = 'text/javascript';
utterances.async = true;
utterances.setAttribute('issue-number', this.id)
utterances.setAttribute('theme','github-light')
utterances.setAttribute('repo',`wsafight/personBlog`)
utterances.crossorigin = 'anonymous';
utterances.src = 'https://utteranc.es/client.js';
// comment 是要插入评论的地方
window.document.getElementById('comment').appendChild(utterances);
}
},
mounted: function(){
// 每次挂载时候,进行初始化
this.initValine()
}
}
</script>7.最后。在 md 文档中直接使用上面编写的组件
## 参考资料
[高性能JS-DOM](https://www.cnblogs.com/libin-1/p/6376026.html)
[imba 性能篇](http://imba.io/guides/advanced/performance)
// 可以在 md 文档中直接使用组件
<Utterances :id="8"/>utterances其他配置项
主题 Theme 选项如下,我们可以选择各色主题:
- Github Light
- Github Dark
- Github Dark Orange
- Icy Dark
- Dark Blue
- Photon Dark
评论 issue-term 映射配置选项如下:
- pathname
- url
- title
- og
- issue-number
issue-term=“1”
特定number的issue,不会自动创建,个人使用该方案 - specific-term
参考文档
手把手教你使用 issue 作为博客评论系统
https://wsafight.github.io/personBlog/posts/utterances/