Appearance
评论使用 Giscus 官方 Vue 组件,内容保存在 GitHub Discussions。读者在文章底部通过 GitHub 登录,即可评论、回复和回应;首次评论时 Giscus 会自动创建讨论,无需逐篇绑定编号。
Owl23007/simple-my-blog
Comments
编辑 docs/.vitepress/comments.ts,从 Giscus 生成的 script 中复制对应字段:
docs/.vitepress/comments.ts
repo
data-repo
repoId
data-repo-id
category
data-category
categoryId
data-category-id
这些是公开标识,不是密钥。不要在前端配置 Token、Client Secret 或个人访问令牌。 当前已配置 Owl23007/simple-my-blog 的 Announcements 分类。复制此项目时应替换成自己的配置; ID 留空时,页面会显示“评论区正在准备中”,不会向 Giscus 发起评论请求。
Announcements
配置后运行 pnpm dev 或重新构建部署,即可看到真实评论区。
pnpm dev
外层标题、容器、加载提示由 theme/components/GiscusComments.vue 控制;iframe 内部 通过 Giscus 官方的自定义主题功能加载下面两个独立 CSS 文件:
theme/components/GiscusComments.vue
docs/public/giscus/light.css
docs/public/giscus/dark.css
字体、圆角、输入框、评论卡片、回复区域和按钮都做了定制。两份 CSS 包含相同的布局规则, 修改布局时需要同步;深色文件末尾覆盖颜色。保留原有登录、回复、Markdown、表情和管理入口。 这属于样式重写;如果要改变 iframe 内部的组件结构或交互流程,需要 fork 并自托管 Giscus。
默认从当前网站的 /giscus/ 目录加载主题,自动兼容 VitePress 的 base。 主题文件必须通过 HTTPS 公开访问,返回 Content-Type: text/css,并允许 Giscus 跨域读取:
/giscus/
base
Content-Type: text/css
Access-Control-Allow-Origin: *
GitHub Pages 部署后需检查主题文件响应头。自行部署 Nginx 时,可为该目录添加:
location /giscus/ { add_header Access-Control-Allow-Origin "*" always; }
将该 location 合并到现有站点配置,并保留原本的 root / alias / MIME 配置;如果使用子路径 部署,需要相应调整 location。不要在代码中关闭浏览器的跨域检查。
也可以在 comments.ts 的 themeBaseUrl 填写托管主题的 HTTPS 目录地址,例如把本次代码 推送到 master 后,使用 https://cdn.jsdelivr.net/gh/Owl23007/simple-my-blog@master/docs/public/giscus。 CDN 可能缓存旧文件,更新样式后可改用新的提交 SHA 替换 master。
comments.ts
themeBaseUrl
https://cdn.jsdelivr.net/gh/Owl23007/simple-my-blog@master/docs/public/giscus
master
本地 HTTP 开发环境默认退回 Giscus 内置浅色/深色主题,避免 HTTPS iframe 加载 HTTP 样式失败。 要检查真实 iframe 中的自定义主题,请填写可公开访问的 HTTPS themeBaseUrl。
默认在 posts/、series/ 和 building/ 下的文章展示,目录页 index.md 不展示。 首页、404 和自定义布局不展示评论;其他普通文档可以手动开启。
posts/
series/
building/
index.md
--- comments: true commentId: my-stable-article-id ---
comments: false
commentId
.md
posts/我的文章
enabled: false
实现使用 mapping="specific" 和严格匹配,两个部署域名共享同一篇文章的讨论。 滚动到评论区附近才加载;路由切换销毁旧组件,切换明暗主题时保留当前输入内容。
mapping="specific"
未找到讨论是新文章的正常状态,首次评论会自动创建。若无法登录或发布,检查 App 权限、 分类 ID 和 Discussions 开关。若只缺样式,检查 CSS 的 HTTPS 地址、跨域响应头与浏览器控制台。 20 秒未收到 iframe 尺寸消息会显示重试按钮,Giscus 后续成功加载仍会自动恢复。
参考:Giscus 配置、 自定义主题与消息接口、 主题维护说明。
配置 Giscus 评论
评论使用 Giscus 官方 Vue 组件,内容保存在 GitHub Discussions。读者在文章底部通过 GitHub 登录,即可评论、回复和回应;首次评论时 Giscus 会自动创建讨论,无需逐篇绑定编号。
1. 准备 GitHub 仓库
Owl23007/simple-my-blog,也可以使用独立的评论仓库。Comments。2. 填写配置
编辑
docs/.vitepress/comments.ts,从 Giscus 生成的 script 中复制对应字段:repodata-reporepoIddata-repo-idcategorydata-categorycategoryIddata-category-id这些是公开标识,不是密钥。不要在前端配置 Token、Client Secret 或个人访问令牌。 当前已配置
Owl23007/simple-my-blog的Announcements分类。复制此项目时应替换成自己的配置; ID 留空时,页面会显示“评论区正在准备中”,不会向 Giscus 发起评论请求。配置后运行
pnpm dev或重新构建部署,即可看到真实评论区。3. 自定义 UI 和主题托管
外层标题、容器、加载提示由
theme/components/GiscusComments.vue控制;iframe 内部 通过 Giscus 官方的自定义主题功能加载下面两个独立 CSS 文件:docs/public/giscus/light.css:浅色背景、蓝色按钮。docs/public/giscus/dark.css:深色背景、橙色按钮。字体、圆角、输入框、评论卡片、回复区域和按钮都做了定制。两份 CSS 包含相同的布局规则, 修改布局时需要同步;深色文件末尾覆盖颜色。保留原有登录、回复、Markdown、表情和管理入口。 这属于样式重写;如果要改变 iframe 内部的组件结构或交互流程,需要 fork 并自托管 Giscus。
默认从当前网站的
/giscus/目录加载主题,自动兼容 VitePress 的base。 主题文件必须通过 HTTPS 公开访问,返回Content-Type: text/css,并允许 Giscus 跨域读取:GitHub Pages 部署后需检查主题文件响应头。自行部署 Nginx 时,可为该目录添加:
将该 location 合并到现有站点配置,并保留原本的 root / alias / MIME 配置;如果使用子路径 部署,需要相应调整 location。不要在代码中关闭浏览器的跨域检查。
也可以在
comments.ts的themeBaseUrl填写托管主题的 HTTPS 目录地址,例如把本次代码 推送到 master 后,使用https://cdn.jsdelivr.net/gh/Owl23007/simple-my-blog@master/docs/public/giscus。 CDN 可能缓存旧文件,更新样式后可改用新的提交 SHA 替换master。本地 HTTP 开发环境默认退回 Giscus 内置浅色/深色主题,避免 HTTPS iframe 加载 HTTP 样式失败。 要检查真实 iframe 中的自定义主题,请填写可公开访问的 HTTPS
themeBaseUrl。文章开关与讨论标识
默认在
posts/、series/和building/下的文章展示,目录页index.md不展示。 首页、404 和自定义布局不展示评论;其他普通文档可以手动开启。comments: false:关闭该页评论。commentId:可选稳定标识,不同文章不要重复使用。commentId时,使用源文件相对路径去掉.md,如posts/我的文章。commentId设为原标识,以继续关联已有讨论。comments.ts中的enabled: false关闭全站评论。实现使用
mapping="specific"和严格匹配,两个部署域名共享同一篇文章的讨论。 滚动到评论区附近才加载;路由切换销毁旧组件,切换明暗主题时保留当前输入内容。验证和排错
未找到讨论是新文章的正常状态,首次评论会自动创建。若无法登录或发布,检查 App 权限、 分类 ID 和 Discussions 开关。若只缺样式,检查 CSS 的 HTTPS 地址、跨域响应头与浏览器控制台。 20 秒未收到 iframe 尺寸消息会显示重试按钮,Giscus 后续成功加载仍会自动恢复。
参考:Giscus 配置、 自定义主题与消息接口、 主题维护说明。