将Hexo博客的评论系统从Valine更换为Waline
字数 1.1k 字 阅读时长 ≈ 4 分钟
终于又一个历史遗留问题得到了解决。
起因是打算把平时经常接触到的网赚信息分享出来,几年了,自己又不太用得上,就这么都浪费了挺可惜的。但是如果没有评论系统的话,很影响互动,所以无论如何也要先修复了。
定位问题
这次一共有两个问题:第一是 av-min.js
又报错了,大概是被 LeanCloud 拒绝访问了;第二个是 LeanCloud 里的历史评论无法显示出来。
解决问题
替换掉Valine
本来一开始没有想到需要替换掉评论系统,只是偶然google到一个博主的博文中,提到了 Waline
(https://waline.js.org/)这个从 Valine 衍生的带后端评论系统。据说可以将 Waline 理解为 With backend Valine。
仔细阅读了以后,发现极为符合我的需求。首先,客户端不再直接连接 LeanCloud ,也就是说有一个 Waline 官方提供的统一服务端来处理与 LeanCloud 的交互,非常有可能我们不用再处理 LeanCloud 频繁改动带来的连接问题;其次,Waline 不但提供了极其丰富的自定义配置和部署方式,而且文档比较完备,步骤相当简单。
当然,缺点也不是没有。一方面是依赖于 Waline 的核心服务端代码,另一方面最简单的迁移方式还是需要 LeanCloud 的服务,总之就是高度依赖于第三方服务。然而这点问题对于它给我带来的好处而言,完全可以忽略不计。
这里的步骤已经非常清晰了(https://waline.js.org/guide/get-started/),而且由于 Waline 的数据结构完全兼容 Valine,所以工作量非常小,跟着教程走就行。
这里只简单说一下几个要点:
1、国内版 LeanCloud 必须使用有备案的域名,并且由于 Waline 要使用api接口,所以还需要在 Vercel
中配置 LEAN_SERVER
这个变量, 而这个变量在 LeanCloud 上进行绑定时,部署证书的时间长得可怕,而且没有部署完是无法正常访问评论的。这一步一定耐心等待(除非你不打算用 LeanCloud ,而改用其他数据库)。
- 绑定API域名对应 “LeanCloud 设置 (数据库)” 的最后一步
- 配置
LEAN_SERVER
变量对应 “Vercel 部署 (服务端)” 的第4步
2、后端评论管理只需要记住 [二级域名].vercel.app
就可以了,没有必要自己绑定专有。这里对应 这一步。
3、客户端引入的时候,如果是普通的浏览器脚本引入方式,例如:
1 | <script src="https://cdn.jsdelivr.net/npm/@waline/client@3/dist/waline.umd.min.js"></script> |
那么初始化部分记得写成:
1 | Waline.init({ |
这里对应 “HTML 引入 (客户端)” 的第2步。
4、最后记得先去 [二级域名].vercel.app/ui/register
注册成为管理员,这样可以更方便的通过域名进行评论管理。
解决历史评论无法显示的问题
其实问题我早就猜到了,但是由于前面 Valine 访问 LeanCloud 的问题,修改了也看不到,无法验证。
在彻底换成 Waline 以后,问题也就轻易的暴露出来,就是我修改了文章的路径,评论系统无法通过 url
参数获取到对应的评论了。所以数据导出来,一个python脚本搞定,再导回去就结束了。
思考
其实在过程中我也看了关于 Valine 的解决方案,这里也推荐大家有时间也可以搜索了看一下,其实对理解它的工作流程很有帮助,这也有助于自己进行项目设计,规避设计风险。
在 Waline 的实施过程中,其实我还尝试了 Vercel
和 腾讯云CloudBase
两种部署方式,也尝试了 LeanCloud
、MongoDB
、MySQL
、 SQLite
和 腾讯云CloudBase
五种数据库连接方式。其中 腾讯云CloudBase 因为现在是要收费的,不推荐, MongoDB 服务端无法访问(端口确认开放,域名也加入白名单,目前没能找到解决方案)。这个过程中我发现 Waline 开发者相当用心,因为文档详尽才能让我快速的尝试这么多方案,而 快速上手文档 中则是选择了可行性最高、最易操作的组合,真是非常棒!
♦ 本文固定连接:https://www.gsgundam.com/2024/2024-03-25-z08-change-valine-to-waline-in-hexo/
♦ 转载请注明:GSGundam 2024年03月25日发布于 GSGUNDAM砍柴工
♦ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
♦ 原创不易,如果页面上有适合你的广告,不妨点击一下看看,支持作者。(广告来源:Google Adsense)
♦ 本文总阅读量次