Project Laser:我的 Astro 多站点博客主题

起源

Project Laser 从 Astro Cactus 主题起步,但经过大量重构后,已经演变成一个完全独立的博客系统。

为什么叫Project Laser?源于游戏 Brawl Stars 里面的 8-bit 相关的一期游戏更新小游戏,地址:https://game.updn.pub

核心特性

多站点架构

一套代码驱动多个独立域名,每个站点有自己的定位:

站点 定位
主站 首页落地页
博客 长文章、技术分享
动态 短内容、日常记录
关于 个人介绍

它们共享同一套 UI 组件和样式系统,但各自独立构建部署。换主题、改样式,所有站点同步更新。

Bear 风格排版

Bear 笔记应用启发,采用简洁的 Markdown 渲染风格:

  • 红色强调色 #DD4C4F
  • 干净的标题层级
  • 舒适的行高和间距
  • 灰色圆角标签

没有花哨的装饰,专注内容本身。

动效组件

集成了一些有趣的动画效果,用于点缀页面:

  • FuzzyText:模糊闪烁文字,用在 404 页面
  • GlitchText:故障风格文字
  • DecryptedText:打字机解密效果
  • StaggeredMenu:交错动画导航菜单

克制使用,不喧宾夺主。

Markdown 增强

除了标准 Markdown 语法,还支持:

高亮语法

这是 ==高亮文本== 效果

数学公式

行内:$E = mc^2$
块级:$$\sum_{i=1}^n x_i$$

提示块

:::tip[提示]
这是提示内容
:::

GitHub 仓库卡片

::github{repo="用户名/仓库名"}

技术栈

  • 框架:Astro 5
  • 交互:React 19
  • 样式:Tailwind CSS 4 + 自定义 CSS
  • 构建:pnpm
  • 搜索:Pagefind
  • 部署:静态文件 + Nginx

选择 Astro 是因为它的"岛屿架构"——页面默认零 JS,只在需要交互的地方注入 React 组件。博客不需要 SPA,静态优先才是正道。

设计理念

1. 内容优先

去掉一切干扰阅读的元素。没有侧边栏广告,没有弹窗,没有花哨的动画背景。

2. 暗色优先

默认深色主题,背景色 #0a0a0a,比纯黑柔和,比浅灰更深邃。当然也支持亮色模式。

3. 性能优先

纯静态输出,页面加载飞快。图片懒加载,代码按需分割。

4. 可维护性

共享 UI 组件抽离到独立目录,样式使用 CSS 变量统一管理。改一处,全站生效。

与 Cactus 的区别

方面 Cactus Project Laser
架构 单站点 多站点独立域名
样式 Tailwind Typography 自定义 Bear 风格
组件 纯 Astro Astro + React 动效
主题 跟随系统 深色优先
定制 通用模板 高度个性化

代码层面的变化:新增 2500+ 行,删除 2000+ 行,修改几乎每个核心文件。可以说只是用 Cactus 当了脚手架。

未来计划

  • 评论系统集成
  • 更多主题配色
  • 文章系列/专栏功能
  • 阅读数据统计

最后

Project Laser 目前没有开源计划,它是为我自己的需求量身定制的。

但如果你也想搭建类似的博客系统,推荐从 Astro Cactus 开始,它是一个很好的起点。


Game Not Over.