当前位置: 首页 > news >正文

好用的博客评论系统 Valine 使用及避坑指南

评论系统,即网站的一个小功能,展示评论内容和用户输入框。开源免费的评论系统可不多,原来很火的"多说"评论系统都关闭了,而Disqus又是国外的访问受限。无意间发现了Valine,挺不错的,分享给大家。

Valine介绍

官网地址:介绍 | Valine 一款快速、简洁且高效的无后端评论系统。

Valine - 一款快速、简洁且高效的无后端评论系统。

Valine 诞生于2017年8月7日,是一款基于LeanCloud的快速、简洁且高效的无后端评论系统。

理论上支持但不限于静态博客,目前已有Hexo、Jekyll、Typecho、Hugo、Ghost 等博客程序在使用Valine。

Valine 目前使用的是Gravatar 作为评论列表头像。但这个有点儿坑,因为这个Gravatar国内访问不到。后面有解决办法。评论的时候,留下所使用的邮箱即可。比如你留下你的qq邮箱,会自动的显示你的qq头像,奇怪的是头像从哪来的?大数据?

Valine使用

由于Valine是基于LeanCloud服务的,数据都在LeanCloud存储。因此需要注册个LeanCloud才能使用。不过注册很简单,且免费开放版提供的1G存储也差不多够用啦。这里推荐下LeanCloud,也可以用来当做一些小项目的存储云服务。

1.注册Leancloud,获取 APP ID 和 APP KEY

在Leancloud用邮箱注册登录,需要实名制认证,邮箱认证。

2.创建Valine应用

命名为 Valine,方案选择开发版,即可以在一定的用量限制下免费运行。

3.进入创建好的应用>设置>选择应用 Key,就能获取到 App ID 和 App Key。

接下来使用就简单啦,只需要在需要的网页下端加入以下js代码即可:

<script src='//unpkg.com/valine/dist/Valine.min.js'></script>
<div id="vcomments"></div>
<script>
new Valine({el: '#vcomments',appId: '21MG1aSIkC71uv7v0NcpKsuk-gzGzoHsz',appKey: 'ESkTqJu5BOJhiSgaZNoAQrVP',placeholder: "你是我一生只会遇见一次的惊喜 ...",avatar:'',//小怪物头像,visitor: true // 阅读量统})
</script>

其中未知名头像都是小怪物(avatar: ‘monsterid’),更多头像选择mp/identicon/monsterid/wavatar/retro/hide

存在的问题,评论的头像不显示,这是因为它使用了Gravatar头像服务。这个有个解决办法,是替换使用国内的同样类型的服务就可以啦。推荐Cravatar。

Cravatar(初认头像)为您的网站公开个人资料提供助力,无论您在互联网上的何处发帖、评论或在线互动均可获取。真人、真实、真像好用方便。

地址:中国公共头像服务CNavatar

把Valine.min.js中默认访问的https://gravatar.loli.net/avatar

替换为以下内容即可: 

https://cravatar.cn/avatar/

LeanCloud介绍

LeanCloud 是领先的 Serverless 云服务,为产品开发提供强有力的后端支持,旨在帮助开发者降低研发、运营维护等阶段投入的精力和成本。 LeanCloud 整合了各项服务,让开发者能够聚焦在核心业务上,为客户创造更多价值。

它提供了四项产品,分别是 LeanStorage(数据、文件存储及云引擎)、LeanMessage(短信、推送及实时通讯服务)、LeanAnalytics(统计分析服务)、LeanModules(各种其他通用组件)。

官网地址:LeanCloud

使用LeanCloud服务后,访问一些服务变得很简单,如数据存储是云服务提供的核心功能之一,可用于存放和查询应用数据。可以这么用:

// 以下示例如何创建一个对象并将其存入云端。
// 声明class 
const Todo = AV.Object.extent('Todo');// 创建对象
const todo = new Todo();// 为属性赋值
todo.set('title','标题');
todo.set('content','这是内容');// 将对象保存到云端
todo.save().then((todo) => {
// 成功保存之后,执行其他逻辑
console.log(`保存成功。objectId:${todo.id}`);
},(error) => {
// 异常处理
});

 python使用leanCloud:

# 声明 class
Todo = leancloud.Object.extend('Todo')
# 构建对象
todo = Todo()
# 为属性赋值
todo.set('title',   '工程师周会')
todo.set('content', '周二两点,全体成员')
# 将对象保存到云端
todo.save()

详细使用方法参见文档:LeanCloud 开发者文档 

其他的一些博客评论系统

Livere(来必力)
https://livere.com

 畅言云评

云评论支持各种类型的Web网站接入,网站只需要粘贴、复制JS代码到网页的任意位置,或者复制代码到模板中,云评论评论框将在所有网页自动出现。这个也有免费版本,就是免费版本的广告太多。听说有lite免广告版本,感兴趣的可以试试。

https://changyan.kuaizhan.com/

Discuss

Discuss是一款简单,安全,免费的评论系统,仅提供基础的评论功能,并没有过多的功能

这可以使得 Discuss 可以融合进其它项目,甚至可以方便而再此基础上进行二次开发。

这个功能也挺强大,就是使用上后台端需要自己部署服务。

https://discuss.js.org/

其他资源

头像配置 | Valine 一款快速、简洁且高效的无后端评论系统。

https://discuss.js.org/Quick-Start.htm

LeanCloud

Valine - 一款快速、简洁且高效的无后端评论系统_valine配置-CSDN博客

【精选】LeanCloud基本使用_leancloud使用说明-CSDN博客

相关文章:

好用的博客评论系统 Valine 使用及避坑指南

评论系统&#xff0c;即网站的一个小功能&#xff0c;展示评论内容和用户输入框。开源免费的评论系统可不多&#xff0c;原来很火的"多说"评论系统都关闭了&#xff0c;而Disqus又是国外的访问受限。无意间发现了Valine&#xff0c;挺不错的&#xff0c;分享给大家。…...

【Mysql】[Err] 1293 - Incorrect table definition;

基本情况 SQL文件描述 /* Navicat MySQL Data TransferSource Server : cm4生产-200 Source Server Version : 50725 Source Host : 192.168.1.200:3306 Source Database : db_wmsTarget Server Type : MYSQL Target Server Version : 50725 File…...

SpringBoot——日志及原理

优质博文&#xff1a;IT-BLOG-CN 一、SpringBoot日志 选用 SLF4j&#xff08;接口&#xff09;和 logback&#xff08;实现类&#xff09;&#xff0c;除了上述日志框架&#xff0c;市场上还存在 JUL(java.util.logging)、JCL(Apache Commons Logging)、Log4j、Log4j2、SLF4j…...

7种SQL的进阶用法

1.自定义排序&#xff08;ORDER BY FIELD&#xff09; 在MySQL中ORDER BY排序除了可以用ASC和DESC之外&#xff0c;还可以使用自定义排序方式来实现。 CREATE TABLE movies ( id INT PRIMARY KEY AUTO_INCREMENT, movie_name VARCHAR(255), actors VARCHAR(255), price DEC…...

Unity--互动组件(Scrollbar)||Unity--互动组件(DropDown )

此组件中的&#xff0c;交互&#xff0c;过渡&#xff0c;导航与文章&#xff08;Unity--互动组件&#xff08;Button&#xff09;&#xff09;中的介绍如同&#xff1b; handle rect&#xff1a;&#xff08;父节点矩形&#xff09; 用于控件的滑动“句柄”部分的图形&#xf…...

Unity、UE和Godot的优劣对比

先占位。。。。。。 首先说Unity和UE这两家公司&#xff0c;是行业的两座灯塔&#xff0c;对整个游戏引擎的这个行业的发展具有这种指导性的这种作作用。这两个引擎我从2016年开始就一直在用&#xff0c;结合一下业内的共识&#xff0c;一般来说认为呢&#xff0c;Unity更擅长移…...

CMAK Kafka可视化管理工具

CMAK简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 CMAK(原名Kafka Manager)。 这个管理工具可以很容易地发现分布在集群中的哪些topic分布不均匀,或者是分区在整个集群分布不均匀的的情况。 它支持管理多个集…...

PHP如何持续监听Redis的消息订阅并推送到前端?

PHP如何持续监听Redis的消息订阅并推送到前端&#xff1f; 概述: 在许多Web应用程序中&#xff0c;实时推送消息是很常见的需求。当我们需要向前端实时发送消息时&#xff0c;往往会使用轮询或长轮询的方式去获取最新数据。但这种方式对服务器资源的消耗较大&#xff0c;同时响…...

php项目从宝塔面板切换转到phpstudy小皮面板

宝塔面板转phpstudy面板 版本 宝塔面板8.0.1 phpstudy面板8.1.1.3 步骤 1、宝塔面板,找到项目文件夹,打包、下载到本地、解压 2、本地windows系统安装phpstudy面板,选择尽可能一样的配置 比如宝塔php7.4.33,可能phpstudy面板只有php7.4.3,也行 大环境一定要一致,比如…...

基于Acconeer的A121-60GHz毫米波雷达传感器SDK移植及测距示例(STM32L496为例)

基于Acconeer的A121-60GHz毫米波雷达传感器SDK移植及测距示例&#xff08;STM32L496为例&#xff09; 工程&#xff1a; Keil工程资源 参考资料&#xff1a; A121 datasheet 1.3 A121 HAL Software Integration User Guide A121 STM32CubeIDE User Guide 官方参考示例工程&a…...

flink1.10袋鼠云 迁移 flink1.15原生环境 事项汇总

表DDL(平台自动生成)修改适配 1 DDL语法不通用 (袋鼠云DDL中支持给别名 DDL采用数据中台生成的模板,并把老版本DDL中的配置通过到相应参数中) 2 袋鼠云DDL支持给别名 sql中字段和DDL中字段不一致. 两种解决方案: 1 FlinkSQL别名语法和袋鼠云略不同 袋鼠云DDL: parseJson(parseJ…...

鸿蒙:Harmony开发基础知识详解

一.概述 工欲善其事&#xff0c;必先利其器。 上一篇博文实现了一个"Hello Harmony"的Demo&#xff0c;今天这篇博文就以"Hello Harmony" 为例&#xff0c;以官网开发文档为依据&#xff0c;从鸿蒙开发主要的几个方面入手&#xff0c;详细了解一下鸿蒙开…...

java_函数式接口

文章目录 一、什么是函数式接口二、四大核心函数式接口三、使用举例 一、什么是函数式接口 如果一个接口只有一个抽象方法&#xff0c;那么该接口就是一个函数式接口函数式接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建如果我们在某个接口上声明了 Funct…...

解决selenium访问网页中多个iframe,导致无法锁定元素的问题

解决方法 获取全部的iframe列表调试获取目标iframe使用&#xff1a;browser.switch_to.frame(目标iframe)退回到原有的状态&#xff1a;browser.switch_to.default_content() # 进入另一个iframe browser_iframe_list browser.find_elements(By.CSS_SELECTOR, "iframe&…...

MySQL大表设计

存储大规模数据集需要仔细设计数据库模式和索引&#xff0c;以便能够高效地支持各种查询操作。在面对数亿条数据&#xff0c;每条数据包含数百个字段的情况下&#xff0c;以下是我能想到的在设计数据库的时候需要注意的内容&#xff0c;不足之处欢迎各位在评论区批评指正&#…...

6.基于蜻蜓优化算法 (DA)优化的VMD参数(DA-VMD)

代码原理 基于蜻蜓优化算法 (Dragonfly Algorithm, DA) 优化的 VMD 参数&#xff08;DA-VMD&#xff09;是指使用蜻蜓优化算法对 VMD 方法中的参数进行自动调优和优化。 VMD&#xff08;Variational Mode Decomposition&#xff09;是一种信号分解方法&#xff0c;用于将复杂…...

OpenCV [c++](图像处理基础示例小程序汇总)

OpenCV [c++](图像处理基础示例小程序汇总) 推荐 原创 NCUTer 2023-04-04 14:18:49 文章标签 Image 图像处理 文章分类 计算机视觉 人工智能 在51CTO的第一篇博文 阅读数1467 一、图像读取与显示 #include<opencv2/opencv.hpp> #include<iostream>using…...

集成多元算法,打造高效字面文本相似度计算与匹配搜索解决方案,助力文本匹配冷启动[BM25、词向量、SimHash、Tfidf、SequenceMatcher]

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…...

Qt实现图片旋转的几种方式(全)

目录 一、用手搓&#xff08;QPainter&#xff09; 二、使用 QGraphicsView 和 QGraphicsPixmapItem 三、使用 QTransform 实现图像旋转 四、利用 OpenGL 实现旋转图像的效果有几种不同的方法&#xff0c;其中常见的包括&#xff1a; 手动旋转绘制&#xff1a; 使用 QPaint…...

常见面试题-Redis持久化策略

谈谈Redis 的持久化策略&#xff1f; 参考文章&#xff1a; Redis 持久化机制演进与百度智能云的实践 Redis的确是将数据存储在内存的&#xff0c;但是也会有相关的持久化机制将内存持久化备份到磁盘&#xff0c;以便于重启时数据能够重新恢复到内存中&#xff0c;避免数据丢…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...