从组件文档引发的惨案 ◤1◢
公司目前有很多后台管理系统,目前代码量都越来越大,在开发的过程中,我们也秉承着提取公共组件,通过复用组件来减少开发工作量,随着公共组件数量的增加,新同事想要快速了解公共组件如何使用,需要到具体的业务页面中去看,这样子学习组件的成本太大,于是就想给每个组件提供一个文档,来解释组件如何使用。
恰巧之前有同事分享过storybook,听闻效果不错,就准备尝试一下~~
storybook
storybook,人如其名,它将实例化的组件称之为story,不同组件的不同实例化组成了一本 ◤故事书◢。每个组件可以有多个故事,故事之间不同一般是因为入参不同,幻化出的组件不同功能。厉害的它还支持很多插件,来扩展这本故事书。
React项目集成storybook
在现有的项目集成storybook,最大的问题是需要将已有的webpack配置和storybook自己的webpack配置集成到一起。
安装storybook
有两种方式(手动和自动),具体可以参考官方文档。
我是采用的手动的方式,觉得比较可控一些。
npm install @storybook/react --save-dev
增加配置文件
在根目录创建文件夹.storybook,然后创建config.js,这个配置文件主要是为了告诉storybook哪些文件是story文件。
import { configure } from '@storybook/react'; // 查找src目录下后缀是.stories.js的文件,就是story configure(require.context('../src', true, /\.stories\.js$/), module);
合并webpack.config.js
storybook要加载你写的组件,需要依赖你的webpack.config.js来编译代码,参考具体文档。
因为我们的项目是使用的ant.desgin pro搭建的,查找了一下居然有人解决过这个问题,就参考了github issues中的解决方法。
写一个story
story其实就是引入组件,并实例化组件的过程,具体的代码如下。
import React from 'react'; import {storiesOf} from '@storybook/react'; import { Button } from '@storybook/react/demo'; const stories = storiesOf('Button', module); stories.add( 'withText', () => { return <Button>Hello Button</Button>; } ).add( 'withEmoji',() => { return <Button><span role="img" aria-label="so cool">