首页 / 分类 / 工程

搭一座个人站:从规范开始


记录以 Astro 为运行时搭建个人站的过程——为什么先写规范、再拆模块、最后验收。

这是骨架期写入的样章,用于验证「schema → loader → 派生函数 → 页面」的全链路可用性。

为什么要先写规范

真正让界面失控的通常不是实现难度,而是含糊。同一句「做个好看的博客」,在不同阶段里可能被理解成完全不同的东西; 因此 docs/SPEC.md 把「好看」拆成色值、字号、间距与动效时长等可以被执行、也可以被验收的条目。

规范的价值不在于文档本身,而在于让「返工」发生在纸上而不是代码里。

两层架构

层 内容 是否上线
开发工具层 编辑器 + 自动化脚本 + SDD 工作流 否,仅开发期存在
博客运行时层 Astro 构建产物 + CDN + 第三方服务 是

这个分离带来的直接好处:开发期的工具变更只会影响开发层;运行时层是确定性的静态产物,随时可回滚。

代码块验证

// src/lib/posts.ts 的派生函数契约(SPEC §6.4)
export async function getFeatured(n = 5): Promise<PostSummary[]> {
  const all = await getPostSummaries();
  return all.filter((p) => p.pinned).concat(all.filter((p) => p.featured)).slice(0, n);
}

下一步

阶段 3 会把首页从「方向预览页」替换为真实组件(Hero / PostCard / PostList),所有视觉细节仍以 docs/SPEC.md §3 的 token 为准。

评论

由 GitHub Discussions 驱动 · giscus