在开发过程中我们时常需要抽离很多公共组件出来,于是需要一个方式或者平台将组件以及他们的用法展示出来。
Storybook是UI组件的开发环境。它允许您浏览组件库,查看每个组件的不同状态,以及交互式开发和测试组件。
官网:https://storybook.js.org/
故事书是故事的集合。每个故事代表组件的单个视觉状态,技术上讲,一个故事是一个函数,它返回一些可以被渲染到屏幕上的东西。
step 1: 安装依赖
a、添加 @storybook/vue 到你的项目中1
npm i @storybook/vue --save-dev
b、添加 @storybook相关依赖1
2npm install vue --save
npm install vue-loader vue-template-compiler @babel/core babel-loader babel-preset-vue --save-dev
step 2: 新增一个npm脚本
在package.json中新增一个 NPM脚本用以启动storybook
1 | { |
step 3: 创建storybook相关的配置文件
一般建议storybook配置文件夹(.storybook)放在最外层,当然你也可以放到任意你想放的位置。
对于storybook的基本配置,唯一需要做的是告诉storybook在哪里去找到故事,所以新建一个config文件,内容为
1 | import { configure } from '@storybook/vue'; |
您可能正在使用全局组件或vue插件(例如vuex),在这种情况下,您需要在config.js文件中注册它们1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17import { configure } from '@storybook/vue';
import Vue from 'vue';
// Import Vue plugins
import Vuex from 'vuex';
// Import your global components.
import Mybutton from '../src/stories/Button.vue';
// Install Vue plugins.
Vue.use(Vuex);
// Register global components.
Vue.component('my-button', Mybutton);
configure(require.context('../src', true, /\.stories\.js$/), module);
上面示例注册了您的自定义Button.vue组件,安装了Vuex插件,并加载了../src/index.stories.js中定义的Storybook故事。 在调用configure()之前,应注册所有自定义组件和Vue插件
step 4: 创建你的stories
现在创建一个存放story的./stories目录,并创建你的第一个故事(stories/index.js)
CSF(Component Story Format)创建story:1 | import Vue from 'vue'; |
1 |
|
导出:将故事书导出为静态应用
Storybook附带有一个工具,可将您的Storybook导出到静态Web应用。然后可以将其部署到GitHub页面或任何静态托管服务上。
只需要简单的添加下面运行脚本1
2
3
4
5{
"scripts": {
"build-storybook": "build-storybook -c .storybook -o .out"
}
}
storybook常用组件使用
https://storybook.js.org/addons/
1、常用组件安装:1 | npm add -D @storybook/addons @storybook/addon-actions @storybook/addon-links @storybook/addon-notes storybook-readme |
2、建立配置文件,注册插件 .storybook/addons.js:1
2
3
4
5import '@storybook/addon-actions/register';
import '@storybook/addon-links/register';
import '@storybook/addon-notes/register';
import 'storybook-readme/register';
import '@storybook/addon-docs/register';
3、安装组件并配置参数
a、全局安装:.storybook/config.js 中通过 addDecorator(addon) 安装
b、story安装:在某个 *.stories.js 中 storiesOf(‘XXX’, module).addDecorator(addon) 安装
部分插件还需要进行参数的配置 这就会用到 addParameters() 方法
a、全局安装:.storybook/config.js 中通过 addParameters({[addonKey]: addonParam}) 追加
b、story安装:在某个 *.stories.js 中 storiesOf(‘XXX’, module).addParameters({[addonKey]: addonParam}) 追加
缺点
1、Addon太多,管理有些混乱
2、支持UI框架多,但是有的Andon却不是所有UI框架都支持,比如info,具体可参见官方文档
3、大版本之间变化大,从网上找到的示例代码比较
入门易、深耕难,StoryBook亦是如此,这需要开发人员提升组件化思维,并结合更多的实践,才能让它更好的助力前端开发。