VitePress 集成 Twikoo 评论
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'
参考文档
VitePress 集成 Twikoo 评论的更多相关文章
- hexo-yilia主题支持twikoo评论系统
如果图片无法加载,可到 我的博客 中,查看完整文章 yilia-more 已经增加对 twikoo 的支持,可直接使用 代码修改 layout/_partial/post 路径下新建 twikoo.e ...
- GitHub-Hexo-Blog 集成Gitalk评论插件
在本文)末尾可查看先查看效果: 1. 新建New OAuth App 在github中,Settings / Develpoer settings OAuth Apps / New OAuth App ...
- 如何通过Gitalk评论插件,5分钟为你的博客快速集成评论功能
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- Orchard运用 - 整合Disqus评论插件
评论对于博客系统那是必须具备的一个功能,Orchard本身也默认实现了评论模块,你可以集成到其他内容,比如博客随笔,不过觉得有点寒碜,样式有点呆板.幸运的是,你可以简单集成第三方评论插件,比如Disq ...
- 【干货】2个小时教你hexo博客添加评论、打赏、RSS等功能 (转)
备注:该教程基于Hexo 2.x版本,目前Hexo是3.x版本,照本教程实现有可能会出现404错误,笔者目前还未找时间去解决,待笔者找时间解决该问题后,再写一篇该问题的解决教程,给各位读者带来困扰,还 ...
- 记一次twikoo引发的站点重大事故
今天我测试私人博客的时候发现twikoo评论发生了错误,显示评论失败:0,我怀疑是我设置的twikoo安全域名有问题,所以我看了整个lssues,找到了我的解决方法! 1.关于配置安全域名后评论消失的 ...
- Twikoo私有化部署教程--迁移腾讯云
目录 备份数据 私有化部署 创建容器 导入数据 重新配置twikoo面板设置 引入前端CDN Nginx https反代http 作者:小牛呼噜噜 | https://xiaoniuhululu.co ...
- 我的基于 JamStack 的新博客
概述 今天心血来潮,介绍一下我的新博客站点 -- https://EWhisper.cn. 我是做基础平台 PaaS 运维和架构的,挺喜欢把工作中学到的新知识写下来.记笔记,突然有一天就抱着「资源共享 ...
- gitbook 入门教程之实用插件(新增3个插件)
插件没有什么逻辑顺序,大家可以按照目录大纲直接定位到感兴趣的插件部分阅读即可. 更多插件正在陆续更新中,敬请期待... 最新更新插件 tbfed-pagefooter 版权页脚插件 gitalk 评论 ...
- JFinal教程:JFinal极速开发企业实战百集JFinal视频教程发布
课程名称:JFinal极速开发企业实战 课程长度:100课时 课程作者:小木(909854136) 课程地址:http://edu.csdn.net/course/detail/1968 官网网址:h ...
随机推荐
- 类的public, private, protected有什么区别?
如何区别C# private和protected? 一.通过使用来区分 1.private:编程语句在模块级别中使用,用于声明私有变量及分配存储空间. 2.protected:编程语句在模块级别中使用 ...
- cJSON解析器总结[转载]
一. 简介 cJson 是c语言编写的一个解析器. 是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器.主要两个文件cJSON.c 和cJSON.h . 主要用来编码和解析 ...
- 实操Deepseek本地创建知识库
之前写了一篇本地电脑部署Deepseek的文章,有些朋友问到如何给本地的Deepseek添加知识库,于是我又找时间学习了下.现在把我的实操过程分享一下.这个是本地部署Deepseek的教程:https ...
- TOGAF 内容元模型综合指南
介绍 开放群组架构框架 (TOGAF) 是一种广泛使用的企业架构框架,它提供了一种结构化的方法来设计.规划.实施和管理企业信息技术架构.TOGAF 内容元模型是该框架的重要组成部分,它提供了一种标准化 ...
- 大数据之路Week10_day05 (Redis的安装与简单命令使用)
Redis 支持单机版和集群,下面的步骤是单机版安装步骤 redis3.0.0版本的安装包百度云链接: 链接:https://pan.baidu.com/s/1mb_SdU5hHlrmUkWN7Drx ...
- manim边学边做--线性变换的场景类
在数学可视化领域,Manim的LinearTransformationScene类为线性代数教学提供了强大的工具. 这个专门设计的场景类继承自VectorScene,通过内置的变换动画和坐标系管理,能 ...
- RealityCapture重建试验
一.使用已有数据集 (一)小型物件(官网) 输入:Camera_Lubitel2_studio "Lubitel Camera" consisting of 72 images 地 ...
- Oracle 对 Json 数据进行增删改
1.背景: 由于项目要求,需要对大型的 Json 数据入库到DB中(clob 类型),由于内容过长或者 oracle 版本限制,有一些熟知的处理方法是不能使用的. 精确解决问题,可以直接看第四步:[4 ...
- 解决 Mac(M1/M2)芯片,使用node 14版本
前言 nvm 在安装 Node.js v14.21.3 时,报错: nvm install 14 Downloading and installing node v14.21.3... Downloa ...
- Flask快速入门2
六,Flask HTTP方法 Http协议是万维网中数据通信的基础.在该协议中定义了从指定URL检索数据的不同方法. 下表总结了不同的http方法: 序号 方法 描述 1 GET 以未加密的形式将数据 ...