当前位置: 首页 > news >正文

Storybook:多框架兼容的前端组件开发工具,高效解决组件隔离开发与文档管理问题

前阵子团队做前端项目,光按钮组件就有十几种 —— 有的带图标,有的带下拉菜单,有的点了之后会加载中,新人接手的时候,要么翻遍别人的代码找用法,要么直接复制粘贴,结果经常因为没传对 props 导致样式错乱,光解释 “这个按钮的 disabled 属性要传布尔值”“图标要放在 iconProps 里”,我每周都得说好几遍,你想想看,这多浪费时间啊?

后来小索奇在整理前端工具库的时候,翻到了 Storybook 这个 Github 项目(仓库地址:GitHub - storybookjs/storybook: Storybook is the industry standard workshop for building, documenting, and testing UI components in isolation),试了一次就觉得 “这简直是组件开发的救星”—— 它能帮你 “隔离开发” 组件,不用依赖整个项目,不用等后端接口,甚至不用搭页面,单独就能写组件、调样式、测交互,写完还能自动生成文档,团队谁要用都能直接查。

它的用法不算复杂,就拿 React 项目举例,先装依赖 “npx storybook init”,系统会自动在 src 里建个 stories 文件夹,你只要在里面写组件的 “故事”(也就是 stories 文件)就行。比如写个 Button 组件,新建个 Button.stories.jsx,里面定义不同状态的按钮,像这样:

import Button from './Button';

export default {

title: 'UI 组件 / Button', // 文档里的分类和名称

component: Button, // 关联的组件

};

// 默认状态的按钮

export const Default = {

args: {

label: ' 默认按钮 ',

disabled: false,

},

};

// 禁用状态的按钮

export const Disabled = {

args: {

label: ' 禁用按钮 ',

disabled: true,

},

};

// 带图标的按钮

export const WithIcon = {

args: {

label: ' 带图标按钮 ',

icon: 'search',

disabled: false,

},

};

写完之后跑 “npm run storybook”,会自动打开一个本地页面 —— 左边是组件分类列表,比如 “UI 组件” 下面能找到 Button;中间是组件预览,点不同的故事(比如 Disabled),就能看到禁用状态的按钮;右边还有个 Controls 面板,能直接改 props 的值,比如把 label 改成 “新按钮文字”,把 disabled 切成 true,中间的按钮会实时变,不用改代码再刷新,调样式的时候特别方便。

我还特意试了它的兼容性,不光 React,Vue、Angular 甚至 Svelte 这些框架都支持,只要装对应框架的适配包就行。之前团队里有个 Vue 项目,装了 @storybook/vue3 之后,写 Vue 组件的 stories 和 React 差不多,生成的文档界面也能和 React 项目的合并,统一放在服务器上,不管是 React 开发还是 Vue 开发,打开同一个地址就能查所有组件,不用记两个链接。

不过有个小细节要注意,刚开始配置的时候可能会踩坑 —— 比如 Vue3 项目要手动装 @storybook/addon-essentials 这个插件,不然右边的 Controls 面板出不来;还有如果组件依赖了全局样式(比如项目里的主题变量),得在.storybook/preview.js 里引入,不然预览的时候样式会乱。第一次用的时候我就因为没引样式,导致按钮的颜色全错了,后来查了文档才搞定,好在官方文档写得挺详细,跟着步骤走很快就能解决。

对了,它还有很多实用的插件,比如 addon-actions,能帮你看组件触发的事件 —— 比如按钮点击事件,点一下预览里的按钮,右边面板就会显示 “onClick 被触发”,还能看到传的参数;还有 addon-docs,能自动把你写的注释转成文档,比如在 Button 组件里写 “@param {string} label - 按钮文字”,文档里就会显示参数说明,不用单独写文档。

你有没有过这种经历?写组件的时候得先启动整个项目,等半天加载完,再跳转到对应页面才能看效果?或者组件多了之后没文档,新人要用只能靠问?你用过其他组件开发工具吗?评论区聊聊,好工具互相分享,大家写组件都能省点力~

我是【即兴小索奇】,点击关注,获取更多相关资源


文章转载自:

http://84CpXdaH.Lffrh.cn
http://QbrVcJKy.Lffrh.cn
http://Qhgj0mgm.Lffrh.cn
http://aY0kASNy.Lffrh.cn
http://WvdQAG6o.Lffrh.cn
http://4CJQZnf8.Lffrh.cn
http://Ujt58F6U.Lffrh.cn
http://F7MarM6s.Lffrh.cn
http://5oVpVNJy.Lffrh.cn
http://HKhjNssH.Lffrh.cn
http://EK9jM5S2.Lffrh.cn
http://uJLGwhRM.Lffrh.cn
http://wrJykLkM.Lffrh.cn
http://Q8sAc7Vg.Lffrh.cn
http://s2Foj5Fj.Lffrh.cn
http://cIEj6o9z.Lffrh.cn
http://UmIevGUU.Lffrh.cn
http://8hft3uLD.Lffrh.cn
http://pTxKSTTW.Lffrh.cn
http://3eyBGjAj.Lffrh.cn
http://HfxZajJo.Lffrh.cn
http://JJCfdA0F.Lffrh.cn
http://YFpssrsU.Lffrh.cn
http://POVoVzHH.Lffrh.cn
http://kfv8sHoc.Lffrh.cn
http://rr7ec3Ej.Lffrh.cn
http://NYWJEhTI.Lffrh.cn
http://QngH9c6q.Lffrh.cn
http://NwHygSXJ.Lffrh.cn
http://nRt79XYu.Lffrh.cn
http://www.dtcms.com/a/370523.html

相关文章:

  • 嵌入式笔记系列——UART:TTL-UART、RS-232、RS-422、RS-485
  • Week 15: 深度学习补遗:集成学习初步
  • 计算机CPU的工作原理介绍
  • 科学研究系统性思维的方法体系:个人研究项目管理
  • macbook intel 打开cursor会闪退
  • Day22_【机器学习—集成学习(2)—Bagging—随机森林算法】
  • 2025年大数据专业人士认证发展路径分析
  • 【CV】Opencv图像处理——①几何变换 (1)
  • dify+Qwen2.5-vl+deepseek打造属于自己的作业帮
  • 待定系数法分解分式
  • WordPress过滤文章插入链接rel属性noopener noreferrer值
  • AwesomeBump Windows上编译细则
  • 2026届大数据毕业设计选题推荐-基于大数据旅游数据分析与推荐系统 爬虫数据可视化分析
  • NIOS ii工程移植路径问题
  • Redis中的List数据类型
  • 设计一个 AB 测试平台
  • MATLAB2025-安装Embedded Code Support Pacjage for STM32 Processors
  • 去中心化投票系统开发教程 第三章:智能合约设计与开发
  • 基于Matlab的MEMS陀螺仪Allan方差分析与随机误差参数识别
  • 植物大战僵尸融合版安装包,下载安装教程
  • 基于STM32的智能宠物屋系统设计
  • SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)
  • (算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
  • 【PCIe EP 设备入门学习专栏 -- 8.1.3 PCIe EP AXI Bridge Module】
  • MySQL集群高可用架构(MHA高可用架构)
  • 多线程任务执行窗体框架jjychengTaskWinForm
  • GPIO介绍
  • 浅析Linux内核scatter-gather list实现
  • MotionSound-简单易用的文本转语音工具
  • 【左程云算法03】对数器算法和数据结构大致分类