使用Hexo+NexT8+Waline搭建评论系统
沙岸雨
编辑于 2023年06月06日 22:30
收录于文集
共3篇

一、为什么要使用Waline?

  很多网上给出的教程都是基于valine,gittalk搭建评论系统。gittalk不必说,利用GitHub的优势,便捷管理,缺点是评论需要登录等;而Valine的教程是最多的,但是Valine国际版自2022年8月左右就停止了国际版对大陆的服务,国内如需使用Valine进行评论,则需选择国内版(所以还需要备案)。而waline也有众多优点,不再赘述

二、为什么要写这篇教程?

因为互联网的变数太大了,加上个人博客搭建这方面的确不够大众化,这导致许多搭建过程十分零散,因版本而异,问题层出不穷,因此本人结合经验,综合诸位大佬的方案,完整走一遍流程,尽力把自己踩过的坑都说到


具体步骤

  1.数据库搭建

  该步骤主要参照Waline官方文档: https://waline.js.org/guide/get-started/

  进行对Leancloud国际版的配置以及Vercel的配置

  需要注意,waline所需要的next版本是8.x版本,若是小于8.x版本而使用了,则可能会出现无法加载评论区的情况。因此请检查自己的next版本,若是小于8请进行升级

那么问题来了,很多人在使用next的时候,会发现GitHub有好几个next仓库,而且哪个看着都像是官方的,咋回事?这里引用一下团队成员的解释:

简单来说,问题就是 theme-next 团队的 owner 始终拒绝向其它任何团队成员提供足够的权限,且 owner 本人自 2019 年 10 月起已连续半年不在线,导致其它活跃的团队成员无法管理仓库,也无法邀请新的成员。 由于对 theme-next 团队的未来不抱有期望,我作为 theme-next 的主要贡献者,自 2020 年 4 月起停止为旧的仓库贡献代码,并创建了新的组织,以确保维护工作正常进行。 只要能够收到足够多的 Bugfix / Feature Request,每月更新肯定不是问题。 目前已经发布的版本在这里: https://github.com/next-theme/hexo-theme-next/releases v8.0.0 版本计划在 Hexo 5.0 版本后发布。

  明白这些东西之后,进入gitbash,执行

代码块
JavaScript
自动换行
复制代码
npm install @waline/hexo-next
复制成功

返回NexT主题文件夹,添加如下内容

代码块
JavaScript
自动换行
复制代码
waline:
  enable: true #是否开启
  serverURL: xxxxxx # Waline #服务端地址,就是部署的 Vercel 地址
  locale:
    placeholder: 无需登录·请留下邮箱以接收回复·来说两句吧~  #评论框的默认文字
  avatar: mm # 头像风格
  meta: [nick,mail] # 自定义评论框上面的三个输入框的内容
  pageSize: 10 # 评论数量多少时显示分页
  lang: zh-cn # 语言, 可选值: en, zh-cn
  visitor: true # 文章阅读统计
  comment_count: true # 如果为 false , 评论数量只会在当前评论页面显示, 主页则不显示
  requiredFields: [nick] # 设置用户评论时必填的信息,[nick,mail]: [nick] | [nick, mail]
  libUrl:  # Set custom library cdn url
  login: enable
复制成功

vercel链接即为如上

然后你就成功配置waline评论系统啦!  然后进行测试,你就会发现,评论加载不出来

为啥呢?很不幸,因为vercel为你分配的链接已经被列入了魔法典籍之中,你只有学会魔法,才能使用vercel的魔术哦~(否则评论系统会加载不出内容,发送提示failed to fetch)

可是,魔法不是人人都会,但我们希望让人人都体验到它的滋味,怎么办呢?

答:我们自定义一个域名不就行啦,或者,我们不用vercel的域名了,我们自己整一个域名就行了


  2.注册域名

  若是已有域名或者打算自己买域名的,可以参考网上其他教程,这里只介绍白嫖欧盟的免费域名方法

  先进行简单的名词解释,方便接下来的理解(本人非专业,只是兴趣爱好,如有错误,请指出)

  1. DNS解析: 我们注册域名形如xxx.com完毕后,实际上全球是访问不到的。此时倘若对该域名进行ping,会提示“找不到主机”。为什么?因为你新注册的域名没有关联ip地址,而全球的互联网只能识别ip访问,因此若是不对你的域名进行dns解析,就没有人能够通过域名访问你的网站。

  2. A记录。实际上是把你的域名和ip与你需要连接的服务器建立起连接,只有这样,你的服务器才能把内容通过你的域名传输出去让大家看到。

方法:

主要步骤参考https://lisenhui.cn/tech/create-your-forever-org-domain.html

标题:创建属于你自己的org永久域名

https://lisenhui.cn/blog/use-custom-domain-active-vercel-waline.html

标题:使用自定义域名激活Vercel部署的Waline服务

注意:

  • 在他的步骤中,注册域名时使用“server names + replies on SOA + replies on NS (recommended)”模式可能导致报错,此时需要切换到“server names”模式。

  • 在使用欧盟域名时,仅是输入DNS 服务地址可能不足以使你的域名正常使用,你仍需要对域名进行A记录和Cname解析,具体步骤自行百度。

成功拿到域名后塞进vercel里在setting→domains会提示这样。你需要按照它给的Type,Name,Values自行到dns服务商进行A记录与Cname的解析,国内可以是dnspods,国外可以使用cloudflare,HE等

成功

之后,用你自定义的域名,重新设置主题配置文件下的域名地址。最后hexo clean&&hexo g&&hexo s即可

其他的坑

  1. 同时开启waline评论与pjax可能会导致评论框无法显示

  2. 升级主题会有亿些麻烦,如果直接覆盖不成,那就重新安装一个next主题,在站点配置文件把theme改为新版本next。而版本问题等等,你的主题配置文件需要重新改一遍

  最后,欢迎大家纠正、补充~