Skip to content

Fuwari增加Waline评论系统

发布: 2026-04-06更新: 2026-09-19字数: 1293 字时长: 约 3 分钟

基于Astro的Fuwari主题非常优雅。静态、敏捷,并且页面切换动画非常丝滑、精美。作为博客,评论系统是必备的,经过和Gemini的疯狂对话,整理Fuwari增加Waline评论系统的操作指南如下:

首先要理解Waline的架构:Waline是前端+后端的评论系统,后端需要部署在服务器或者类似于Vercel的云函数;前端需要在博客页面加载。下面分别介绍:

安装后端 ​

参照官方文档:服务端介绍,推荐部署在Vercel。如果有自己的服务器也可以独立部署。因为官方文档非常详细了,所以不再赘述。

博主使用的1 Panel面板,可以在应用商店中一键安装。安装后需要绑定域名并设置SSL。

通过编辑compose 文件,常用的后端环境参数如下:

 environment:
  - SQLITE_PATH=SQLITE路径
  - TZ=Asia/Shanghai
  - JWT_TOKEN=登陆密钥
  - COMMENT_AUDIT=false是否开始审核
  - AUTHOR_EMAIL=作者邮箱
  - SITE_NAME=网站名称
  - SITE_URL=网站地址
  - SECURE_DOMAINS=安全地址,配置时安全域名需要同时添加网站地址和 Waline 服务端地址(不包含传输协议,即 http:// 或 https://)。
  - SMTP_SERVICE=SMTP服务商
  - SMTP_USER=SMTP发件人
  - SMTP_PASS=SMTP密码
  - SMTP_SECURE=true
  - DISABLE_REGION=true 隐藏评论者的IP归属地)
  - DISABLE_USERAGENT=true 隐藏评论者的 UA
  - AVATAR_PROXY=https://cravatar.cn/avatar/{{mail|md5}}
  - AKISMET_KEY=false 关闭垃圾检测,海外服务拖慢速度
  - GRAVATAR_STR=https://cravatar.cn/avatar/

更多环境变量详见官方文档-服务端环境变量

完成后端部署后,waline服务地址就是https://你的waline后端域名。打开https://你的waline后端域名/ui/register进行注册,第一个注册的账号就是博主。

加载前端 ​

1.将官方客户端导入项目 ​

根据官方文档,Waline 官方客户端已通过 @waline/client 发布到 npm,可以通过以下命令安装:

bash
pnpm add -D @waline/client

使用方法:在你的博客根目录下运行上述命令。(可以直接使用Windows自带的命令提示符,右键-在终端中打开)

image-20260406071313653

2.创建 Waline 组件 ​

在 src/components/ 目录下新建一个文件 Waline.astro,如果没有编译器,可以直接用记事本打开,粘贴以下内容

astro
---
// src/components/Waline.astro
import '@waline/client/style';
---

<div class="waline-wrapper mt-8 p-6 rounded-2xl bg-[var(--card-bg)] transition-colors shadow-sm">
  <waline-comments data-server="https://你的-waline-服务端地址"></waline-comments>
</div>

<script>
  import { init } from '@waline/client';

  class WalineComments extends HTMLElement {
    walineInstance = null;

    connectedCallback() {
      const serverURL = this.dataset.server;
      
      // 创建挂载点
      const container = document.createElement('div');
      this.appendChild(container);

      // 初始化 Waline
      this.walineInstance = init({
        el: container,
        serverURL: serverURL,
        // 核心:监听 Fuwari 根元素的 dark 类名,实现黑夜模式的自动切换
        dark: 'html.dark', 
        emoji: [
          'https://unpkg.com/@waline/emojis@1.1.0/bilibili',
        ],
        // 其他你需要的 Waline 配置项...
      });
    }

    disconnectedCallback() {
      // 核心:处理 Swup 页面切换,离开页面时自动销毁实例,防止内存泄漏或重复渲染
      if (this.walineInstance) {
        this.walineInstance.destroy();
      }
    }
  }

  // 注册 Web Component
  if (!customElements.get('waline-comments')) {
    customElements.define('waline-comments', WalineComments);
  }
</script>

<style is:global>
  /* 深度定制 Waline 样式以完美融入 Fuwari */
  :root {
    /* 采用 Fuwari 的主色调 */
    --waline-theme-color: var(--primary);
    --waline-active-color: var(--primary);
    
    /* 基础样式微调 */
    --waline-font-size: 1rem;
    --waline-border-radius: 0.75rem;
  }

  /* 黑夜模式细节优化 */
  html.dark {
    --waline-border: 1px solid var(--line-color, #333);
    /* 让输入框和背景融合到 Fuwari 的深色卡片中 */
    --waline-bgcolor: var(--card-bg, #1e1e1e);
    --waline-bgcolor-light: var(--bg, #121212);
  }
</style>

注意将上面的https://你的-waline-服务端地址改为你自己的后端地址。

可选配置项(精简化)

imageUploader: false, // 关闭图片上传功能(隐藏传图按钮)
search: false,        // 关闭 GIF 搜索功能(隐藏 GIF 按钮)
noRss: true,   //关闭RSS按钮

更多教程详见官方文档《在项目中导入》。

3.将组件引入文章页面 ​

接下来,需要把写好的组件注入到博客文章的底部。

找到 Fuwari 渲染文章内容的页面,通常位于 src/pages/posts/[...slug].astro。打开该文件,在文章内容的末尾引入并使用 <Waline /> 组件:

image-20260406072852134

添加到最后即可,如上图。

按照这个方案部署,Waline 就能跟随 Fuwari 的平滑过渡动画完美加载,并且随着右上角的主题按钮实时切换黑夜/白天模式。