这个项目的目标很明确:做一个可以静态部署的个人图库博客,同时尽量降低图片站点常见的两个问题。

第一是首屏加载太重。第二是内容维护太复杂。

为了让这两个问题都可控,整个站点采用了几条比较核心的技术策略。

1. 用 Next.js 做静态导出

项目基于 Next.js 的 App Router,但最终不是做服务端渲染,而是走静态导出。

这意味着页面会在构建时直接生成成静态文件,部署后不依赖数据库,也不需要运行时接口去拼页面。

这样做的好处很直接:

  • 部署简单,适合 GitHub Pages 这类静态托管
  • 成本低,维护压力小
  • 页面结构稳定,适合个人作品集和博客

2. 图片在构建期处理,而不是运行时处理

图库站最大的性能压力通常来自图片。

如果原图直接进入首页和列表页,移动端体验会很差,所以这里把图片处理放在构建阶段完成。

每张原图会自动生成三层资源:

  • thumb:给首页、列表页和卡片页
  • preview:给详情页默认展示
  • full:只在用户点击查看原图时加载

这样做以后,用户平时浏览到的是较轻的版本,而不是一上来就下载原图。

3. 内容层把图片和文章统一成一个可读模型

项目里真正让页面简单的,不是样式,而是内容层的抽象。

图库和博客最终都会整理成统一的数据结构,比如:

  • 标题
  • 日期
  • 摘要
  • 标签
  • 封面
  • 图片列表

页面组件只消费这些统一数据,不关心文件到底来自哪里,也不直接拼图片路径。

这让后面做首页、图库页、标签页和博客页都轻很多。

4. 发布流程做了“最小输入”优化

一开始如果每组图库都必须写 index.mdimages.json,维护成本会很高。

所以现在内容层支持了更轻的用法:

  • 图库:只要新建目录并放进 images/
  • 博客:普通文章可以直接写一个 .md

如果你后面想补标题、摘要、标签和图片说明,再补元数据文件就可以。

这种策略比较适合个人站点,因为它优先保证“能持续更新”,而不是强迫每次发布都走完整流程。

5. GitHub Pages 的关键适配点

因为这个站部署在 GitHub Pages 上,所以还有一个很实际的问题:它不是挂在网站根路径,而是挂在仓库子路径下。

这会影响:

  • 页面路由
  • 静态资源路径
  • 构建后的图片地址

所以项目里对 GitHub Pages 做了单独适配,确保缩略图、预览图和原图都能在 /xiaety_gallery/ 这个前缀下正常访问。

6. 混合横竖图的展示策略

图库站还有一个常见问题:横图和竖图混排时,要么裁切严重,要么留白很多。

这次的处理策略是:

  • 首页精选区使用规则网格,保证整体整齐
  • 图库归档页和标签页使用更适合混合比例的瀑布流
  • 卡片图片默认完整显示,不再强行裁成统一竖图比例

这样做不是完全追求绝对统一,而是优先保留图片内容本身。

结语

这个项目最重要的不是某个单独的技术点,而是几件事一起配合:

  • 静态导出让部署简单
  • 构建期图片处理让浏览更轻
  • 内容层统一抽象让页面实现更干净
  • 最小输入的发布方式让维护更省力

对于个人图库博客来说,这样的组合比复杂的后台系统更适合长期维护。