# 组件使用政策(reacticle 协议) 文章用 `reacticle` 组件协议写:**不手写裸 `div` / `className` / 行内 `style` / CSS**。 结构走语义组件,正文走段落,自定义视觉走 `Raw`。从包入口导入: ```tsx import { ThemeProvider, Article, Hero, Lead, Section, Aside, Table, Raw } from "reacticle"; ``` ## 核心规则(始终适用) 1. **Prose-first,组件按需,Raw 自由。** - **正文是主体**:普通段落写成 `Section` 的 children,应占文章绝大部分。 - **语义组件是点睛,只在内容确实"是"那个结构时才用**:`Summary` / `Aside` / `Quote` / `Table` / `RiskList` / `Decision` 等。不要堆叠当装饰 —— 堆卡片会让 文章显得做作、零碎。litmus test:若一句话 / 一个列表 / 一张表 / 一块 Raw 读起来 更好,就用那个。 - **Raw 相反:鼓励多用。** 交互、动画、自定义可视化、新颖排版 —— Markdown 做不到的 东西,才是把文章从"能读"变成"值得读"的关键。Raw 不打断阅读,它给密集文本节奏与 呼吸。 2. **表达语义,不表达布局。** 说"这是 insight / risk / decision",别说"蓝卡片、24px 边距"。 3. **Props 即协议。** 填齐必填字段;确实没有就留空 —— 组件会渲染显式的 `⚠ 未指定xxx` 标记,让缺口可见。**绝不为掩盖缺口而编造。** 4. **主题,不写样式。** 作者只通过 `ThemeProvider` 选一个主题,从不写组件样式。 5. **始终用 `` 包住 `
`。** 6. **版式与主题解耦。** `Article` 的 `width`(`narrow` / `regular` / `wide` / `full`,默认 `regular`)决定阅读列宽,`toc`(默认在本 Skill 开启)决定是否有左侧目录 —— 都按内容选、 经 Plan Checkpoint 确认,**不由主题决定**。详见 `references/layout.md`。 7. **一个 Section = 一个文件。** 每个 Section 必须是独立组件(`article/sections/NN-*.tsx`), **坚决不允许**把多个 Section 写进一个组件;`Article.tsx` 只做组装(assembler)。这是 多 Agent 并行开发的前提,详见 `references/section-build.md`。 ## 组件分两层:默认核心 + 领域特例 **默认核心组件(绝大多数文章只用这些 + 正文 + Raw):** - 结构:`Article`、`Hero`、`Lead`、`Section`、`Subsection`、`Conclusion`、`TOC` - 观点:`Summary`、`Aside`、`Quote` - 数据:`Table` - 技术:`CodeBlock`(写代码**只用它**)、`Formula` - 媒体:`Image` - 自由层:`Raw` **领域特例组件(仅当内容"确实是"该结构时按需取用,不要因为属于某类文章就全用上):** - 决策 / 审阅:`RiskList`、`Decision`、`ActionList`、`Checkpoint`、`Tradeoff`、`Incident` - 代码评审:`DiffReview` - 交互壳:`Detail`、`Tabs` - 富媒体:`Video`、`Audio` > **不要暴露给作者**:`HighlightedCode` 是 `CodeBlock` 的内部底层,写代码一律用 > `CodeBlock`,不直接使用 `HighlightedCode`。 选组件前先过 litmus test(规则 1):若正文 / 列表 / 表格 / Raw 读起来更好,就不要为了 用组件而用组件。领域特例组件每多用一个,都要能回答"这块内容本质上就是它"。 完整组件 API(属性、用法)见组件库本身的 reference: `skill/references/{structure,insight,structured,decision,technical}.md`(reacticle-authoring skill),按需读取,不要一次全读。 ## 使用原则 - 正文是主体。组件是语义,不是装饰。 - Raw 是文章表现力,不是应用开发入口(边界见 `raw-policy.md`)。 - `Table` 负责二维信息;`Image` 负责真实或生成配图;`Raw` 是自由的 Web 层 —— 任意 HTML / CSS / JS / React:交互、自定义布局排版、动效、嵌入小工具,以及按需的图解(SVG / canvas),SVG 只是其中一种手段,不是默认。 - **`Raw` 与 `Image` 正交,不是二选一**:`Raw` 始终默认存在、照常使用;`Image` 是否使用、 用哪种来源由 Plan Checkpoint 的配图策略决定(见 `references/asset-policy.md`)。选配图 `none` 只表示不用外部图片,`Raw` 不受影响。 ## 信息密度与组件比例 见 `information-density.md`:100% 时长文优先、Raw 点亮关键概念;密度越低,视觉块比例 越高,但**仍必须保持文章形态**。 ## 最小骨架(注意比例:大量正文 + 一个点睛组件 + 一块 Raw) ```tsx import { ThemeProvider, Article, Hero, Lead, Section, Aside, Raw } from "reacticle"; export function Article_() { return (
导语,框定主题。

正文段落用 children —— 这应是文章主体,尽量多写正文。

再写一段,把背景、推理、结论用文字讲清楚。

); } ```