Twikoo 是一个简洁、安全、免费的静态网站评论系统。

主要特点:免费搭建,部署简单,功能很完善,隐私护安全,通知发邮件,管理有内嵌,总之免费又方便

关于后端部署,大家可以看官网,或者这篇 VitePress 资源汇总 - 使用 Twikoo 评论系统

推荐使用 Vercel 部署 (免费,需配置域名加速访问) 或者 Netlify 部署(免费)。

这篇主要讲 Vitepress 前端如何集成。

预览

集成步骤

1. 安装 twikoo

pnpm install twikoo

2. 初始化 twikoo 组件

<template>
<div id="twikoo"></div>
</template> <script setup lang="ts">
import { onMounted, watch } from 'vue'
import { useRoute } from 'vitepress' const route = useRoute() const initTwikoo = async () => {
// 判断是否在浏览器环境中
if (typeof window !== 'undefined') {
const twikoo = await import('twikoo')
twikoo.init({
envId: 'https://twikoo.xxx.com/', // 换成你自己配置的域名
el: '#twikoo'
})
}
} // 监听路由刷新评论
watch(route, () => {
initTwikoo()
}) onMounted(() => {
initTwikoo()
})
</script>

3. 组件插入 Layout 插槽

<script setup lang="ts">
import DefaultTheme from 'vitepress/theme'
import Twikoo from './Twikoo' //评论组件
</script> <template>
<DefaultTheme.Layout>
<template #doc-after>
<Twikoo />
</template>
</DefaultTheme.Layout>
</template>

美化样式

1. 配置 twikoo

twikoo 配置面板里的插件页签,选择代码高亮主题 coy,代码复制插件 copyButton

2. 自定义 css

以下代码中使用的部分变量,可利用开发者工具在本站查找或自己配置。

.twikoo {
.el-input-group__append,
.el-input-group__prepend,
.el-textarea__inner {
border: 1px solid #DCDFE6;
box-shadow: none;
}
.el-input-group__prepend {
border-right: none;
}
.el-button--small {
height: auto;
}
.el-textarea > .el-textarea__inner {
min-height: 117px !important;
border-radius: var(--weiz-border-radius);
margin-top: var(--weiz-spacing-2xl);
}
.tk-preview-container {
border-radius: var(--weiz-border-radius);
}
.tk-comments-count {
font-size: var(--weiz-font-size-sm);
color: var(--vp-c-text-2);
}
.tk-nick,
.tk-replies .tk-nick-link {
font-size: var(--weiz-font-size-st);
margin-right: var(--weiz-spacing);
color: var(--weiz-primary-color);
}
.tk-tag {
margin-right: var(--weiz-spacing);
}
.tk-comments-container > .tk-comment {
border: solid 1px #F3F4F6;
border-radius: var(--weiz-card-border-radius);
padding: var(--weiz-spacing-6xl);
margin-top: 0;
margin-bottom: var(--weiz-spacing-6xl);
transition: var(--weiz-transition-3);
&:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}
}
.tk-replies-expand > .tk-comment {
border-top: solid 1px #f7f7f7;
padding-top: var(--weiz-spacing-4xl);
}
.tk-content p {
line-height: 1.6;
}
a {
color: var(--weiz-primary-color);
&:hover {
color: var(--weiz-primary-color-light-1);
}
}
// 代码块
div.code-toolbar {
border-radius: var(--weiz-border-radius);
box-shadow: var(--vp-code-block-shadow);
:not(pre)>code[class*=language-], pre[class*=language-] {
background: var(--vp-code-block-bg);
border-radius: var(--weiz-border-radius);
}
pre[class*=language-] {
&::before, &::after {
content: none;
}
&>code {
padding: 0.5em;
border-left: 4px solid var(--weiz-primary-color);
border-radius: var(--weiz-border-radius);
box-shadow: var(--vp-code-block-shadow);
}
}
&>div.toolbar {
z-index: 1;
top: 8px;
right: 8px;
&>.toolbar-item>button {
display: none;
padding: 0 6px;
font-size: 12px;
color: black;
}
}
&:hover>div.toolbar>.toolbar-item>button {
display: block;
}
}
}
.dark .twikoo {
.tk-comments-container > .tk-comment {
border-color: #454545;
&:hover {
box-shadow: 0 4px 12px rgba(255, 255, 255, 0.15);
}
}
.tk-replies-expand > .tk-comment {
border-color: #343434;
}
// 代码块
div.code-toolbar {
pre[class*=language-] {
&>code {
filter: brightness(0.8);
}
}
}
}

3. css 注入主题配置

// 全局样式
import './style/index.scss'

参考文档

Twikoo 官方文档

VitePress 集成 twikoo 参考解决方案

VitePress 集成 Twikoo 评论的更多相关文章

  1. hexo-yilia主题支持twikoo评论系统

    如果图片无法加载,可到 我的博客 中,查看完整文章 yilia-more 已经增加对 twikoo 的支持,可直接使用 代码修改 layout/_partial/post 路径下新建 twikoo.e ...

  2. GitHub-Hexo-Blog 集成Gitalk评论插件

    在本文)末尾可查看先查看效果: 1. 新建New OAuth App 在github中,Settings / Develpoer settings OAuth Apps / New OAuth App ...

  3. 如何通过Gitalk评论插件,5分钟为你的博客快速集成评论功能

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  4. Orchard运用 - 整合Disqus评论插件

    评论对于博客系统那是必须具备的一个功能,Orchard本身也默认实现了评论模块,你可以集成到其他内容,比如博客随笔,不过觉得有点寒碜,样式有点呆板.幸运的是,你可以简单集成第三方评论插件,比如Disq ...

  5. 【干货】2个小时教你hexo博客添加评论、打赏、RSS等功能 (转)

    备注:该教程基于Hexo 2.x版本,目前Hexo是3.x版本,照本教程实现有可能会出现404错误,笔者目前还未找时间去解决,待笔者找时间解决该问题后,再写一篇该问题的解决教程,给各位读者带来困扰,还 ...

  6. 记一次twikoo引发的站点重大事故

    今天我测试私人博客的时候发现twikoo评论发生了错误,显示评论失败:0,我怀疑是我设置的twikoo安全域名有问题,所以我看了整个lssues,找到了我的解决方法! 1.关于配置安全域名后评论消失的 ...

  7. Twikoo私有化部署教程--迁移腾讯云

    目录 备份数据 私有化部署 创建容器 导入数据 重新配置twikoo面板设置 引入前端CDN Nginx https反代http 作者:小牛呼噜噜 | https://xiaoniuhululu.co ...

  8. 我的基于 JamStack 的新博客

    概述 今天心血来潮,介绍一下我的新博客站点 -- https://EWhisper.cn. 我是做基础平台 PaaS 运维和架构的,挺喜欢把工作中学到的新知识写下来.记笔记,突然有一天就抱着「资源共享 ...

  9. gitbook 入门教程之实用插件(新增3个插件)

    插件没有什么逻辑顺序,大家可以按照目录大纲直接定位到感兴趣的插件部分阅读即可. 更多插件正在陆续更新中,敬请期待... 最新更新插件 tbfed-pagefooter 版权页脚插件 gitalk 评论 ...

  10. JFinal教程:JFinal极速开发企业实战百集JFinal视频教程发布

    课程名称:JFinal极速开发企业实战 课程长度:100课时 课程作者:小木(909854136) 课程地址:http://edu.csdn.net/course/detail/1968 官网网址:h ...

随机推荐

  1. OpenLayers 4326地图 根据距离设置地图分辨率

    问题:给一个距离,如何确定4326地图缩放等级或者分辨率使地图视口范围为这个距离 我本来打算计算从地图视口左上角到右下角的距离来计算地图缩放的,然后发现不好算,我也不会算,于是就计算水平方向距离的缩放 ...

  2. Python - “人生苦短,我用Python”

    Python中的值(数据)类型 类型 描述 说明 数字(Number) 支持 整数(int) 浮点数(float) 复数(complex) 布尔(bool) 整数(int),如:10.-10 浮点数( ...

  3. mysql扫描全表更新状态部分失败

    1. mysql排序问题 一直以为mysql是按照主键排序的,实则排序和主键没有关系(不使用 order by 子句). 然后从 stackoverflow 上查了一下,找到了以下的回答: 没有默认的 ...

  4. Trae AI 工具使用记录--0手写代码创建桌面代办事项软件

    使用的AI工具是最近字节跳动出品的Trae工具. 第一步 下载IDE,Trae(官网链接 https://www.trae.ai) 安装完成后注册.登录,可以直接使用github账号.第一个坑就是目前 ...

  5. Abaqus压电材料分析

    目录 1. ABAQUS压电材料定义[快速版] 2. 压电材料的主要特性参数 3. Abaqus 压电分析 1 电响应 2 initial condition & BCs 4 Load 5 M ...

  6. idea 登录提示Server's certificate is not trusted

    原因:你本地的idea证书不可以 解决方式1: 你去安装一个正版的: 解决方式2: 设置接受不受信任证书即可. AS:File - Settings - Tools - Server Certific ...

  7. 一款HTML转Markdown格式的工具

    Markdown格式不仅对写博客的人非常友好和方便,对AI也是如此. 目前AI大语言模型的输出基本都是Markdown格式,这就意味着AI是能充分理解Markdown格式的,这一点非常重要. Mark ...

  8. boot3+JDK17+spring-cloud-gateway:4.0.0+spring-cloud:2022.0.0.0+Nacos2.2.1配置动态路由的网关

    项目依赖 配置 # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html # Nacos认证信息 spring.cloud.nacos.config ...

  9. 一次Java后端服务间歇性响应慢的问题排查记录

    分享一个之前在公司内其它团队找到帮忙排查的一个后端服务连接超时问题,问题的表现是服务部署到线上后出现间歇性请求响应非常慢(大于10s),但是后端业务分析业务日志时却没有发现慢请求,另外由于服务容器li ...

  10. 【C#】Winform监听USB串口设备拔插实现自动断开

    [C#]Winform监听USB串口设备拔插 零.问题 最近在开发串口相关的软件,需要检测串口拔掉后主动关闭串口,因此需要检测到USB的拔插事件. 一.解决 在主窗口From类下覆盖WndProc方法 ...