你要带走的三件事

  • 数据结构先于组件

    schema 是真相。组件只是 discriminant 的投影。先改 YAML,再谈样式。

  • 加区块只有三处

    keystatic.config.tsx、sections.tsx、homepage.yaml。漏写渲染器会被 never 检查抓住。

  • 双栏是教学工具

    左右共享一份草稿。预览不读盘。Save 才是写 content/homepage.yaml 的那一下。

  • 文章走另一条路

    首页用 blocks 字段;文章正文用 Markdoc 内容组件。两种组件化,别混。

教学 Demo

组件拼首页。左边改,右边看。

首页不是一篇 Markdown,是一组带 discriminant 的区块。 每个区块对应一个 React 组件。左侧改草稿,右侧立刻变。保存才写入 YAML。

为什么这样拆

首页是结构,文章是叙述

把首页写成一篇长 Markdown,看起来快,改起来会变成一堆 if。 blocks 字段让每种区块有自己的字段表,Reader 吐出的就是 { discriminant, value }。 渲染器用 switch 穷尽所有 discriminant,没有第三种数据源。

先把数据结构想清楚。组件只是那张表的投影。

教学注释不是一句口号,是这个仓库的组织方式

从这两篇开始

全部文章

眉题

新的首屏

改左侧字段,右侧马上变。

下一步:自己加一个区块

打开「如何加一个首页区块」,按三步做完。做完你就懂这个主题了。

动手加区块