文档
如何为你的组件编写文档。
良好的文档对于让你的组件易于访问和使用至关重要。本指南概述了每个组件文档页面应包含的关键要素。
文档框架
为了扩展你的文档,你可以使用一个文档框架。根据你的项目语言和需求,有许多可用选项。常见选项包括:
- Fumadocs - 用于 Next.js 的快速且功能丰富的文档框架
- Nextra - 基于 Markdown 的文档,内置搜索和主题支持
- Content Collections - 用于文档的类型安全内容管理
- Docusaurus - 支持版本控制的功能丰富文档站点
- VitePress - 基于 Vue 的静态站点生成器,针对文档进行了优化
首选的框架应支持语法高亮、自定义组件并且具备良好的设计。
必要的文档章节
概述
以简短的介绍开始,说明组件的作用以及何时使用它。
演示、源代码和预览
为了给开发者留下良好的第一印象,你应包含一个展示组件实际效果的演示,以及用于创建该演示的代码。
如果你使用的是开源的 注册表,你还可以包含用于创建组件的源代码预览。
使用带语法高亮和一键复制功能的代码块。考虑使用选项卡界面在这些视图之间切换,而不会使页面混乱。
安装
包含关于如何安装组件的清晰说明。最好是一个可以复制粘贴到终端中的单行命令。
如果你在基于 shadcn/ui 构建,可以使用 shadcn CLI 来安装组件,例如:
npx shadcn@latest add <your-component-url>如果你要发布到 市场,可以使用市场提供的 CLI 来安装组件,例如:
npx shadcn@latest add https://21st.dev/r/<your-author>/<your-component>如果你没有使用 shadcn/ui,但正在构建一个 注册表,你可以构建你自己的 CLI 来安装组件,例如:
npx your-registry-cli@latest add <your-component-url>最后,如果你发布到 npm,你可以使用 npm CLI 来安装组件,例如:
npm install <your-component-name>要像我们上面展示的那样显示多种安装选项,你可以使用类似 Fumadocs 的 package-install 语法。
功能
列出组件的关键功能,帮助用户快速了解其能力与优势。例如:
- 可定制 – 轻松调整样式、大小和行为以满足你的需求。
- 默认可访问 – 遵循键盘导航、ARIA 角色和屏幕阅读器支持的最佳实践。
- 可组合 – 设计为能与其他组件和模式无缝协作。
- 类型安全 – 随包附带全面的 TypeScript 类型以获得最大安全性和自动补全。
- 主题支持 – 与你的设计代币或主题系统集成。
- 轻量 – 最小依赖并针对性能进行了优化。
- 支持 SSR/SSG – 可与服务端渲染和静态渲染框架一起使用。
- 文档完善 – 包含清晰的用法示例和 API 参考。
根据你的具体组件调整该列表。强调使其独特或对开发者特别有用的点。
示例
使用实用示例展示组件的灵活性:
- 变体 - 可用的不同视觉样式或尺寸
- 状态 - 加载、禁用、错误或成功状态
- 高级用法 - 复杂场景和边缘情况
- 组合 - 组件与其他组件协作的方式
- 响应式行为 - 在不同屏幕尺寸下的适应方式
每个示例都应包含渲染输出和对应的代码。
Props 与 API 参考
记录所有可用的 props、方法和配置选项。考虑将相关的 props 分组并突出常用项。对于每个 prop,包含:
- 名称 - prop 标识符
- 类型 - TypeScript 类型定义
- 默认值 - 未指定时的默认值
- 是否必需 - prop 是否为必填
- 描述 - prop 的作用以及何时使用
如果你使用 Fumadocs,你可以考虑使用 Auto Type Table 来确保准确性并减少维护负担。
可访问性
记录你的组件如何支持可访问性功能:
- 键盘导航模式
- ARIA 属性和角色
- 屏幕阅读器支持
- 焦点管理
- 色彩对比注意事项
更新日志与版本控制
在每个组件文档页面上维护更新日志可能很有用,内容包括:
- 遵循语义化版本的版本号
- 新功能和增强
- Bug 修复
- 重大变更(breaking changes)
- 主要版本更新的迁移指南
帮助用户了解版本之间的差异以及如何安全升级。对破坏性更改包含前后示例代码。
如果你的语法高亮框架支持(例如 Shiki),你可能想使用 diff transformer notation 来显示版本之间的更改。
最佳实践
- 保持文档与代码变更同步
- 使用解决实际问题的真实示例
- 包含常见陷阱和故障排查提示
- 在相关情况下提供性能方面的注意事项
- 链接到相关组件和模式
- 确保所有代码示例可运行并经过测试