cover

『 永不结束的歌 』

Tarokiki

805 字
4 分钟
博客开发总结:组件、数据库与部署

博客开发总结#

在基于Astro框架 + Fuwari Theme改造为个人博客的过程中,我进行了一系列二次开发。这不仅是对原项目的个性化,更是一次涵盖了 多框架混合开发数据库功能集成 的实践。

本文将详细复盘我所开发的几个核心组件。


1. 侧边栏组件开发:技术栈与访客统计#

为了让博客更具个人特色和互动性,我为侧边栏开发了两个自定义组件。

技术栈组件 (TechStack.astro)#

  • 功能: 以标签云的形式动态展示我的技术栈。
  • 实现: 这是一个纯 Astro 组件,通过遍历一个包含技能信息的数组来动态渲染 UI。利用 Tailwind CSS 的 group-hover 特性,实现了平滑的图标缩放动效。

访客统计组件 (VisitorStats.vue)#

  • 功能: 显示全站的 PV (总访问量) 和 UV (总访客数)。
  • 实现: 我选择使用 Vue 3 来封装这个组件,以展示在 Astro 架构下集成多框架的能力。组件通过不蒜子服务获取数据。

2. 留言板开发:Vue 3 + Supabase#

为了让博客可以与访客互动,我为导航栏开发了一个留言板组件。

技术架构#

  • 前端: 使用 Vue 3 组合式 API 构建交互界面,实现了留言的实时加载、表单验证和提交动画。
  • 后端: 采用 Supabase 作为数据库,负责留言数据的持久化存储。
  • 数据通信: 通过官方的 @supabase/supabase-js SDK,在前端组件中直接与云端数据库进行异步数据交互。

3. 多媒体增强:Vue 3 音乐播放器组件#

为了提升主页的个性化体验,我开发了一个沉浸式的音乐播放器组件。

核心功能与技术点#

  • 原生 Audio 交互: 基于ref 绑定 HTML5 Audio 元素,封装 play()/pause() 核心播放方法,监听 timeupdate/ended 原生事件,实现播放进度实时更新、播放完毕自动切歌等核心逻辑。
  • 进度条逻辑: 通过 Vue 计算属性实时计算播放进度((currentTime / duration) * 100),并通过 :style="{ width: ${progress}% }" 动态控制内层进度条宽度,实现播放进度可视化。
  • 视觉质感设计: 使用 Tailwind CSS 实现了毛玻璃(玻璃拟态)效果,通过 bg-[rgba(var(--card-bg-rgb),0.5)] 半透明背景 + backdrop-filter: blur(10px) 模糊滤镜实现。基于 Tailwind 内置工具类替代手写 CSS,如文字颜色适配暗黑模式dark:text-white/80

4. 部署到cloudflare pages#

  • 创建项目: 在 Cloudflare 控制台中创建一个新的项目,关联 GitHub 仓库。
  • 配置 Pages: 选择 “Pages” 选项卡(现在这个选项很隐蔽,只有一行小字),注意不要配置成worker。配置构建命令为 npm run build,输出目录为 dist
  • supabase KEY: 确保 Supabase 项目已经部署,在设置页面配置环境变量 SUPABASE_URLSUPABASE_KEY,这两个值可以在 Supabase 控制台的 “项目设置” -> “API” 中找到。 (本地项目的supabase key不会生效,需要在cloudflare pages的环境变量中配置)
  • 部署: 点击 “部署” 按钮,Cloudflare 会自动构建并部署你的博客。
博客开发总结:组件、数据库与部署
https://fuwari.vercel.app/posts/fuwari-development-summary/
作者
茶饼茶饼
发布于
2026-03-16
许可协议
CC BY-NC-SA 4.0