UNPKG

@ozo/react-rock

Version:

React 移动端开发脚手架,基于CRA3,通用、开箱即用。

148 lines (95 loc) 3.91 kB
# 编写组件文档 ## 背景 主流UI组件库: + Bootstrap(Js+Jq) + Material-UI (React) + Ant Design (React) + Element (Vue) + iView(Vue) 通过UI 组件,前端项目就像搭积木一样简单。为了提升开发效率,沉淀一套适合自己团队的 UI 组件库是一种较为有效的方式之一:可以减少重复工作、提高可复用。 **构建思路:**在大厂开源 UI 组件库的基础上个性化色彩(一般都提供颜色定制)、增加团队的个性化需求组件、减少不需要的组件。 UI 组件库少不了使用文档,这里通过Docz+ MDX 来写 React UI 组件文档。下图左边是创建的 MDX 文档,右边是 Docz 渲染出的组件及组件代码。 ![Docz 用 MDX 写 React UI 组件文档](https://img1.3s78.com/codercto/60393acda07dcbebfe5bfa952daa49fb) > [Docz](https://github.com/pedronauck/docz) :用于构建演示文档,其特色是零配置、简单、快速,它使用 Markdown 语法的扩展 MDX (在 Markdown 里引入 React 组件并渲染出组件)来书写文档。 非常简单! ## 使用 1. 在项目中安装 Docz: ``` yarn add docz --dev 或 npm install docz --save-dev ``` 2. 创建 .mdx 文件并输入: ```md --- name: Button --- import { Playground, PropsTable } from 'docz' import Button from './' # Button <PropsTable of={Button} /> ## Basic usage <Playground> <Button>Click me</Button> <Button kind="secondary">Click me</Button> </Playground> ``` 3. 运行: ``` yarn docz dev ``` 打完收工,这样你就收获了一个简单的 Button 组件的演示文档。 ##### ![Docz 用 MDX 写 React UI 组件文档](https://img1.3s78.com/codercto/dc1fc692925ae138fc7b067dc157d3ce) 4. 构建 ``` yarn docz build ``` 更多详情,请参照[官方文档](https://www.docz.site/)。 ### 编辑组件的[propTypes](https://www.npmjs.com/package/prop-types) ​ 可能你发现上图中除了自己写的演示案例外,还多了一个Properies。 这个属性列表里的说明是哪来的?其实这是Docz等演示文档生成工具会直接从组件的PropTypes列表中的注释提取来的。所以你编写组件时,应该为组件编写详尽的`propTypes`注释,就像这样: ```jsx class Button extends Component { static propTypes = { /** * button的size,包括"xs","sm","md","lg","xl",支持*markdown* */ size: Proptypes.oneOf(["xs","sm","md","lg","xl"]); /** * call after button is clicked,支持*markdown* */ onClick: PropTypes.func, } ... } ``` ## 配置 ​ 零配置方便是方便,但有时想界面个性化点还是很费事的(官方提供 Themes 支持,但现仅有一套官方的默认主题),下面分享一个通过引入本地 CSS 的方式来改变默认主题的配置。 1. 创建配置文件 doczrc.js ,增加 htmlContext 内容。 > 更多配置:https://www.docz.site/documentation/project-configuration ```js export default { htmlContext: { head: { links: [ { rel: 'stylesheet', href: '/base.css' } ] } } } ``` 2. .docz 目录下创建 public 文件夹并创建 base.css ,在 base.css 里写自己的样式覆盖默认的即可。 ## 最后 + [Docz](https://github.com/pedronauck/docz):简单好用,但现在只支持 React。 + [Storybook](https://github.com/storybooks/storybook):是一个更强大的集组件开发、查看、测试的文档工具,支持: - React - React Native - Vue - Angular - Polymer - Mithril - Marko - HTML - Svelte - Riot + [Docsify](https://github.com/docsifyjs/docsify): 搭配 Vuep 写 Playground 。 + [redemo](https://github.com/imweb/redemo): 依赖[react-docgen](https://github.com/reactjs/react-docgen)来提取组件的`propTypes`注释。