惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
SecWiki News
SecWiki News
博客园_首页
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
P
Palo Alto Networks Blog
V
Vulnerabilities – Threatpost
Project Zero
Project Zero
WordPress大学
WordPress大学
NISL@THU
NISL@THU
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy & Cybersecurity Law Blog
Jina AI
Jina AI
AWS News Blog
AWS News Blog
Scott Helme
Scott Helme
Martin Fowler
Martin Fowler
C
Cybersecurity and Infrastructure Security Agency CISA
Forbes - Security
Forbes - Security
H
Heimdal Security Blog
小众软件
小众软件
I
Intezer
A
Arctic Wolf
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
O
OpenAI News
S
Security Affairs
阮一峰的网络日志
阮一峰的网络日志
Latest news
Latest news
G
GRAHAM CLULEY
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
N
News and Events Feed by Topic
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V2EX - 技术
V2EX - 技术
Stack Overflow Blog
Stack Overflow Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 最新话题
博客园 - Franky
P
Proofpoint News Feed
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
P
Proofpoint News Feed
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
T
The Exploit Database - CXSecurity.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
F
Full Disclosure
Security Latest
Security Latest

Kaffa.im

Kaffa.im - 寻找数据源头 Kaffa.im - 玩魔方 Kaffa.im - AI 在常见病上取代医生 Kaffa.im - 上 NextCloud,一站搞定个人数据同步 在 Windows 上 Bose SoundLink 音箱声音自动停止问题的解决 Kaffa.im - 交易的实质——浪随风向 Kaffa.im - 新手学电脑从入门到精通 Kaffa.im - 数字化转型之路(从数字化到数智化) Kaffa.im - 机器人简史 Kaffa.im - 安卓Frida逆向与协议分析 Kaffa.im - 数学的惊奇 Kaffa.im - 牌局心理学 Kaffa.im - Python计算机视觉实战 Kaffa.im - ALaunch v1.0 发布 Kaffa.im - Windows 音频设备控制之旅 Kaffa.im - 结构性优势 Kaffa.im - 尤瓦尔·赫拉利-真假信息与连接 Kaffa.im - 小狗钱钱 Kaffa.im - 短视频编导全能手 Kaffa.im - 爆品创新:新时代爆品打造法 Kaffa.im - 如何阅读一本书 Kaffa.im - 冰血暴第一季 Kaffa.im - 冰血暴第二季 Kaffa.im - 冰血暴第三季 Kaffa.im - 冰血暴第四季 Kaffa.im - 冰血暴第五季 Kaffa.im - 思维迭代的26个卓越方法 Kaffa.im - 再度唤醒世界:赖特诗选 Kaffa.im - 中国量化投资 Kaffa.im - Clojure Recipes Kaffa.im - 文案卖货 Kaffa.im - 印象派与东亚美术 Kaffa.im - 深入实战vue开发 Racket Programming the Fun Way Kaffa.im - 我们为什么爱喝酒 Kaffa.im - 雅余的自省《独立博客自省问卷15题》 Kaffa.im - 2024年第41-42周周报 莫名解决局域网内 macOS 与 Windows 不能互访的问题 Kaffa.im - 2024年第39-40周周报 Kaffa.im - 2024年第37-38周周报 Kaffa.im - Money Focused Freestyle 给网站增加了 DIŸgöd 的 follow(Description 方式) Kaffa.im - 给网站增加了 DIŸgöd 的 follow Kaffa.im - 2024年第35-36周周报 Kaffa.im - 记录盒马鲜生好吃的烘培和好喝的啤酒 Kaffa.im - 边水往事 Kaffa.im - 事件流实战 Kaffa.im - 神经漫游者 Kaffa.im - 重启蒙娜丽莎 Kaffa.im - 零伯爵 Kaffa.im - TypeScript编程 Kaffa.im - 唯有书籍——读书、藏书及与书有关的一切 Kaffa.im - 福佳白啤 Kaffa.im - 2024年第33-34周周报 Kaffa.im - 安全意识、记一次MySQL勒索 Kaffa.im - 2024年第31-32周周报 Kaffa.im - 关于遗产代码维护 Kaffa.im - Rust项目开发实战 Kaffa.im - 抖音盒子:短视频与直播带货从入门到精通 Kaffa.im - 浮华与金戈(中世纪上) Kaffa.im - Rust系统编程 Kaffa.im - 大话机器智能 Kaffa.im - 为什么伟大不能被计划——对创意、创新和创造的自由探索 Kaffa.im - 电解质水平替、该不该喝酒及智商堪忧 Kaffa.im - AI融入生活的两点想法 Kaffa.im - 2024年第29-30周周报 Kaffa.im - 《黑客与画家》中累加器引发的思考 Kaffa.im - 2024年第27-28周周报 Kaffa.im - 别丧了,一点也不酷 Kaffa.im - 心智的本质 Kaffa.im - 宽客人生 Kaffa.im - 工作一年拉开差距:问题解决 Kaffa.im - 工作一年拉开差距:逻辑思考 Kaffa.im - Svelte和Sapper实战 Kaffa.im - The Digital Factory Kaffa.im - 游世与自然生活——庄子评传 Kaffa.im - 工作的原理·发现问题篇 Kaffa.im - 工作的原理·解决问题篇 Kaffa.im - DB Service Kaffa.im - 2024年第26周周报 Kaffa.im - 「KN.phoenix」终极笔记软件需求 Kaffa.im - ALaunch v0.9 发布 当我们 Build in Public 时,我们谈些什么 Kaffa.im - 2024年第25周周报 Kaffa.im - 2024年第24周周报 Kaffa.im - [翻译]此网站是个人的 Kaffa.im - [翻译]制作自己的独立网站 Kaffa.im - [翻译]制作自己的独立网站 Kaffa.im - 2024年第23周周报 清除 Microsoft Edge 自动跳转 https 的缓存 参加 AWS 讲 AIGC 活动 Kaffa.im - 2024年第22周周报 Kaffa.im - 2024年第21周周报 Kaffa.im - 2024年第20周周报 Kaffa.im - 营销管理 Kaffa.im - 所有旅生,AI的一图定位来了 Kaffa.im - 2024年第19周周报 Kaffa.im - 2024年第18周周报 Kaffa.im - 年轻只是爱构建
Kaffa.im - 给网站增加最近评论功能
Kaffa · 2024-06-17 · via Kaffa.im

给网站增加最近评论功能

Kaffa 发布于

痛点

最近修改网站设置后,giscus 评论未显示。直到我进入了项目的 Discussion 才看到有一些最新留言,但这些留言未显示在文章下方。为不错过留言,我决定为网站增加最新评论功能。

分析

那么是否有一种方式,可实现在网站上显示最新评论呢,对此,所有的回答都是肯定的。

程序可以实现一切。如果是静态网站(SSG),实现方式稍一想,就有三种。

方式一、直接从 https 抓取所有的评论网页,解析出评论。缺点是依赖页面结构,可能会失效,需要随着 Github 页面结构的更新而更新。

方式二、使用 Github 提供的 API,需要查看 Github 文档,需要注意保护好授权 Token。

方式三、使用 Github Action 和 Webhook 实现在评论时维护一个 comments.json 文件,缺点是每次生成前需要拉取这个文件,增加了生成时间。

综合来看,如果官方支持,那选方式二是最佳选择。

实现

经过查阅文档和讨论,发现 Github 有 graphql 和 REST 两种形式的 API,未来有 REST API 迁移到 graphql 的趋势。且 Discussion 是一个较新的特性,获取 Discussion 目前只有 graphql API。

编程助手已经改变了编程,经过一个提问,一次复制,我就获得了代码结构,此时,基于我对 graphql 的入门理解,我直接修改了 query,几次尝试后,我就获得了需要数据。整个过程确实节省了不少时间。

至于 Token 保护,我还是选择了在 .gitignore 中增加 .env 文件,然后从 .env 读取的方式,而不是使用系统变量。PyCharm 或 IDEA 系,对系统变量的处理有点奇怪。系统变量更新了,你不通过搜索甚至不知道它什么时候更新,此时 .env 就没这问题,唯一要注意的是不要遗忘先添加 .gitignore 再添加 .env。

实现源码 ,然后在 jinja2 模板中循环展示,由于更新频率,此处只是简单实现以满足基本需求,并未严格按时间排序。

未来计划

对于评论功能,最开始使用的是 gitalk,后来有人反馈无法打开,于是增加了 giscus。这两者之间,gitalk 使用 issue,giscus 使用 discussion,相比来说,我认为 issue 会更基础一些。如果有一天未来要砍掉特性,discussion 必定在砍 issue 之前,当然了,砍特性这种事在公司还有现金流时,是不会发生的。

gitalk 和 giscus 的优点是免费,如果要说缺点,gitalk 和 giscus 的就是依赖一种并不是为此设计的用法,Github 可以处理掉这种不合适的用法,那是评论就会失效,迁移数据也许挺麻烦的。

所以,最好的方式是换自己支持评论的程序,或者依赖一些 serverless 的服务,将评论数据以开放的结构存放在可控的地方。