前端工具Storybook简介

认识Storybook

Storybook (https://storybook.js.org/) 是一个很不错的开源工具,用于帮助前端组件开发,可以支持React, Vue和Angular等框架。
正如它的名字所预示的一样,使用它可以写出组件库的活的用户故事(user story)。
它的网站首页这样说道:storybook 为UI组件提供一个独立的沙箱环境,在这里无论是edge case还是难于遇到的状态都可以造出来。可以把use case 像故事一样展现出来。
想象一下过去我们如果希望单独测试一个组件的行为和表现该怎么做?我不知道各位大佬如何,反正我就老老实实地写个页面(甚至专门建个测试用的project)把组件扔进去,再启动测试服务器,打开浏览器和调试窗口…
有了Storybook, 终于可以鸟枪换炮了,而且这些story不是写写测试一下就没有用了,它们不仅可以供以后测试用比如UT,也可以用于生成文档。这样的话原来老土的手工活在工具话流程化后突然变得高大上了…
在这里插入图片描述
storybook 的界面如上图所示,左面边栏是story 列表,右面主要部分就是要展示的目标组件。右下的面板可以做一些控制比如改变状态。

如何写Story

文件扩展名

Story文件需要以.stories.js结尾,它并不会被编译到最终打包的程序中。

组件故事格式

Storybook 官网文档给出了一个专用的“组件故事格式”(CSF)用来写Story。
基本要求大概有以下几点:

  1. 默认的export的对象是指定的meta data, 包括标题(其实是故事路径),组件,装饰起和参数
  2. 有名字的export对象会被当成一个story function, 系统会自动把驼峰表示法的名字拆成空格分隔的名字。
  3. Story function 的参数会被作为args输入
  4. Storybook 其实也支持直接指定story 的名字,比如xxx.storyName = “xxxx”
  5. 在meta data 里面可以指定includeStories 和excludeStories,并支持正则表达式,这样我们就可以export 不是story function的对象了。

Story的参数

我们可以在metadata 里面定义一些参数(parameters)这样可以提供一些配置上的灵活性。官方文档给出的例子是背景颜色的。注意这些参数是和一定的插件(addons)一起工作的。

export default {
  title: 'Button',
  component: Button,
  //👇 Creates specific parameters for the story
  parameters: {
    backgrounds: {
      values: [
        { name: 'red', value: '#f00' },
        { name: 'green', value: '#0f0' },
        { name: 'blue', value: '#00f' },
      ],
    },
  },
};

然后界面上就会出现三种可选的背景色

装饰器

装饰器(decorators)有点像装饰模式,就是说在渲染组件时用装饰器把组件包起来。

多个组件的故事

有时候我们会设计一些需要一起使用的组件,Storybook 也支持把它们放在一起写story。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Storybook是一个响应式UI开发和测试环境,可以用于可视开发和调试React和Vue组件。它是一个开源工具,可以帮助开发人员在隔离环境中构建UI组件和页面,简UI开发、测试和文档编写的过程。你可以在官方网站https://github.com/storybooks/storybook上找到更多关于Storybook的信息。安装Storybook可以参考官方文档中的指南。在Storybook中,通过默认导出的元数据来控制如何列出你的故事(stories)并提供插件使用的信息。例如,一个故事文件Component.stories.js的默认导出如下所示:\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [ storybook的介绍和使用 比较火的响应式UI开发及测试环境 ...](https://blog.csdn.net/weixin_34226706/article/details/89549555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [storybook 使用 (react-create-app ts篇)](https://blog.csdn.net/weixin_43480867/article/details/125246011)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值