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

news2025/1/17 9:00:48

评论系统,即网站的一个小功能,展示评论内容和用户输入框。开源免费的评论系统可不多,原来很火的"多说"评论系统都关闭了,而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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1239476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9、鸿蒙应用桌面图标外观和国际化

一、项目资源目录 项目下的resoueces目录为资源配置目录&#xff0c;其中base为基础配置&#xff0c;即在任何语言环境下都会加载的资源&#xff0c; color.json&#xff1a;用于配置颜色&#xff0c;如页面的背景和文字的颜色。 string.json&#xff1a;用于设置文字&#…

java_函数式接口

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

Pandas一键爬取解析代理IP与代理IP池的维护

目录 前言 一、获取代理IP 二、解析代理IP 三、维护代理IP池 四、完整代码 总结 前言 在爬虫过程中&#xff0c;我们经常会使用代理IP来绕过一些限制&#xff0c;比如防止被封IP等问题。而代理IP的获取和维护是一个比较麻烦的问题&#xff0c;需要花费一定的时间和精力。…

重磅!这本30w人都在看的Python数据分析畅销书:更新了!

想学习python进行数据分析&#xff0c;这本《利用python进行数据分析》是绕不开的一本书。目前该书根据Python3.10已经更新到第三版。 Python 语言极具吸引力。自从 1991 年诞生以来&#xff0c;Python 如今已经成为最受欢迎的解释型编程语言。 pandas 诞生于2008年。它是由韦…

requests库中r.content 与 r.read() 的使用方式

目录 一、r.content属性 二、r.read()方法 三、两者区别 总结 requests库是Python中一个非常流行的HTTP客户端库&#xff0c;可以方便地发送所有类型的HTTP请求。在requests库中&#xff0c;r.content和r.read()是两个常用的方法&#xff0c;用于获取HTTP响应的内容。本文将…

数据结构与算法编程题11

已知两个链表A和B分别表示两个集合&#xff0c;其元素递增排列。 请设计算法求出A与B的交集&#xff0c;并存放于A链表中。 a: 1, 2, 2, 4, 5, 7, 8, 9, 10 b: 1, 2, 3, 6, 7, 8 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #defin…

Postman插件如何安装(一)

我们chrome插件网热门推荐的软件之一就是postman。但是postman的适应平台分为&#xff1a;postman chrome应用程序&#xff0c;postman应用程序&#xff0c;postman插件。谷歌应用商店从2018年3月开始停止chrome应用程序的更新。除非继续使用老版本的postman chrome应用程序&am…

基于区域划分的GaN HEMT 准物理大信号模型

GaN HEMT器件的大信号等效电路模型分为经验基模型和物理基模型。经验基模型具有较高精度但参数提取困难&#xff0c;特别在GaN HEMT器件工艺不稳定的情况下不易应用。相比之下&#xff0c;物理基模型从器件工作机理出发&#xff0c;参数提取相对方便&#xff0c;且更容易更新和…

关于 Docker

关于 Docker 1. 术语Docker Enginedockerd&#xff08;Docker daemon&#xff09;containerdOCI (Open Container Initiative)runcDocker shimCRI (Container Runtime Interface)CRI-O 2. 容器启动过程在 Linux 中的实现daemon 的作用 Docker 是个划时代的开源项目&#xff0c;…

pikachu_php反序列化

pikachu_php反序列化 源代码 class S{var $test "pikachu";function __construct(){echo $this->test;} }//O:1:"S":1:{s:4:"test";s:29:"<script>alert(xss)</script>";} $html; if(isset($_POST[o])){$s $_POST[…

Java如何获取泛型类型

泛型&#xff08;Generic&#xff09; 泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型&#xff0c;在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Vis…

2023 年 亚太赛 APMCM ABC题 国际大学生数学建模挑战赛 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 以五一杯 A题为例子&#xff0c;以下是咱们做的一些想法呀&am…

HTML新手入门笔记整理:HTML基本标签

结构标签 <html> </html> 告诉浏览器这个页面是从<html> 开始&#xff0c;到 </html>结束 <head> </head> 网页的头部&#xff0c;用于定义一些特殊内容&#xff0c;如页面标题、定时刷新、外部文件等。 <body> </body> …

2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲…

MySQL 事务的底层原理和 MVCC(二)

7.2. undo 日志 7.2.1. 事务回滚的需求 我们说过事务需要保证原子性&#xff0c;也就是事务中的操作要么全部完成&#xff0c;要么什么也不做。但是偏偏有时候事务执行到一半会出现一些情况&#xff0c;比如&#xff1a; 情况一&#xff1a;事务执行过程中可能遇到各种错误&a…

Differences between package.json and pnpm-lock.yaml

1.pnpm-lock.yaml 是pnpm包管理工具生成的确保依赖包的版本在所有的环境里面都相同对依赖包的任何操作都会更新在该文件中&#xff0c;因此&#xff0c;需要确保提交到代码仓库中。包含了解析的依赖项和版本号。如下图&#xff1a; 2.package.json 列出应用所需的依赖和元数…

LeetCode算法题解(动态规划)|LeetCode343. 整数拆分、LeetCode96. 不同的二叉搜索树

一、LeetCode343. 整数拆分 题目链接&#xff1a;343. 整数拆分 题目描述&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入…

MySQL 8.2 Command Line Client打开时一闪而过闪退问题

MySQL8.2安装成功后&#xff0c;发现打开MySQL 8.0 Command Line Client时出现一闪而过&#xff0c;打不开的情况。 解决方案&#xff1a; 1、打开MySQL 8.2 Command Line Client文件位置 2、右键选择属性 3、复制它的目标 4、我复制下来的目标路径是这样的&#xff0c;"…

每日一题:LeetCode-589.N叉树的前序遍历

每日一题系列&#xff08;day 01&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

linux ld 链接器学习笔记

ld链接器笔记 1. 首先编写一段汇编代码 这里的汇编语法时 AT&T语法,是gcc原生支持的语法,底层使用 gas(gnu assembler) 完成汇编,相较于 Intel x86语法, AT&T 语法要更加古老,因此大多数人更加偏向于使用 Intel 的语法. nasm 编译器支持x86语法.自从2.10版本&#xf…