加薪攻略之UI组件库实践—storybook

领导“拍了拍”你,是时候搭建你们团队的 UI 组件文档库了

一、业务背景

项目中抽离的组件较多的时候,没有集中展示出来具体有些什么,而是分布在各个使用的业务场景中。对于新接触项目的开发人员来说,由于不清楚业务场景,考虑复用组件时不是很直观,也不便于后期组件测试,维护和升级。

二、选用方案

目前业界最流行的StoryBook,使用StoryBook——更好地管理我们的UI组件

使用StoryBook的特点:

组件驱动开发,由下至上,从底层组件开始一步步构建界面

隔离开发环境展示组件,无需运行项目

无需关心组件的依赖和要求

隔离UI组件,支持独立调试&测试,统一展示项目组件库。

使用效果

Storybook官网

三、引入分析

由于原有项目技术栈为:vue+elementui+less, 可以参考Vue版的官方指南进行安装,经过一番实践,看了很多文章,也踩了很多坑,终于总结了以下步骤,可以更好的适配我们的项目和无侵入式引入storybook。

项目结构

项目效果

四、实现步骤

  • install storybook 依赖
  • 新建storybook配置文件./storybook/config.js,添加相关配置,加载组件的stories
  • 为storybook的组件运行添加对应的webpack配置(./storybook/webpack.config.js)
  • 为组件添加story(即xxx.stories.js)
  • 运行storybook

1.添加依赖

npm install @storybook/vue --save-dev
npm install vue-loader@15.3.0 style-loader css-loader less-loader --save-dev

(注意vue-loader的版本在15以上,配合webpack4使用)

2.添加npm执行脚本

"scripts": {
...
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook -c .storybook -o .out"
},

3.添加配置文件

.storybook/config.js

import { addParameters,configure } from '@storybook/vue';
function loadStories() {
/*根据特定的文件名加载stories,在这个例子,用xxx.stories.js命名文件*/
const req = require.context('./stories', true, /\.stories\.js$/);
req.keys().forEach(filename => req(filename));
}
addParameters({
options: {
panelPosition: 'right' //操作面板在右边
},
})
configure(loadStories, module);

根据项目情况,同样在以上文件中,做一些和项目中 main.js 相似的初始化工作:

//.storybook/config.js

import Vue from "vue";
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import axios from "axios";
import '@/utils/prototype'; Vue.config.productionTip = false;
Vue.prototype.$http = axios;
Vue.use(ElementUI, { size: 'mini'}); ...

4.添加必要的webpack配置

创建文件 .storybook/webpack.config.js

// .storybook/webpack.config.js

const path = require('path');

module.exports = async ({ config, mode }) => {
function resolve(dir) {
return path.join(__dirname, "..", dir);
}
//设置别名同项目保持一致
config.resolve = {
extensions: [".js", ".vue", ".json", ".jsx"],
alias: {
vue$: "vue/dist/vue.esm.js",
"@": resolve("src"),
"@assets": resolve("src/assets")
}
}; config.module.rules.push({
test: /\.(css|less)$/,
use: ["style-loader", "css-loader","less-loader"],
exclude:/node_modules/
});
return config;
};

5.准备项目中的组件

src/components/Button/index.vue

<template>
<button :class="type" class="btn">
<slot></slot>
</button>
</template> <script>
export default {
name: "HelloWorld",
props: {
type: {
type: String,
default: "default" // default/primary/danger
}
}
};
</script> <style scoped lang="less">
.btn {
border: 1px solid transparent;
background: #fff;
outline: none;
color: #333;
padding: 5px 10px;
}
.default {
border: 1px solid #e3e3e3;
color: #333;
background-color: #fff;
} </style>

6.为组件添加story

创建 .storybook/stories/button.stories.js

import { storiesOf } from '@storybook/vue';
import vButton from '../../src/components/Button/index.vue'; storiesOf('Button', module)
.add('with text', () => ({
components: { vButton },
template: '<v-button>Hello Button</v-button>',
}))
.add('with some emoji', () => ({
components: { vButton },
template: '<v-button>

加薪攻略之UI组件库实践—storybook的更多相关文章

  1. 为公司架构一套高质量的 Vue UI 组件库

    有没有曾遇过,产品要我们实现一个功能,但是 iview 或者 elementui 不支持,我们然后义正言辞的说,不好意思,组件库不支持,没法做到. 有没有曾和设计师争论得面红耳赤,其实也是因为组件库暂 ...

  2. 前端笔记之Vue(四)UI组件库&Vuex&虚拟服务器初识

    一.日历组件 new Date()的月份是从0开始的. 下面表达式是:2018年6月1日 new Date(2018, 5, 1); 下面表达式是:2018年5月1日 new Date(2018, 4 ...

  3. react_app 项目开发 (4)_ React UI 组件库 ant-design 的基本使用

    最流行的开源 React UI 组件库 material-ui 国外流行(安卓手机的界面效果)文档 ant-design 国内流行 (蚂蚁金服 设计,一套 PC.一套移动端的____下拉菜单.分页.. ...

  4. 16款优秀的Vue UI组件库推荐

    16款优秀的Vue UI组件库推荐 Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基 ...

  5. vue移动端金融UI组件库滴滴MandMobile面向金融场景设计附功能思维导图

    vue移动端金融UI组件库滴滴MandMobile面向金融场景设计附功能思维导图 Mand Mobile是面向金融场景设计的移动端组件库,基于Vue.js实现.目前已实际应用于滴滴四大金融业务板块的1 ...

  6. [转载]前端——实用UI组件库

    https://www.cnblogs.com/xuepei/p/7920888.html Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https:/ ...

  7. [转]VUE优秀UI组件库合集

    原文链接 随着SPA.前后端分离的技术架构在业界越来越流行,前端的业务复杂度也越来越高,导致前端开发者需要管理的内容,承担的职责越来越多,这一切,使得业界对前端开发方案的思考多了很多,以react.v ...

  8. 【转】前端——实用UI组件库

    Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https://valor-software.com/ngx-bootstrap/#/ github: h ...

  9. 前端——实用UI组件库

    Angular UI 组件 ngx-bootstrap 是一套Bootstrap 组件 官网:https://valor-software.com/ngx-bootstrap/#/ github: h ...

随机推荐

  1. LoadRunner 多用户并发 登录,上传数据,登出的脚本教程

    这里记录 Web/Http  模式,模拟多用户并发进行  : 登录,上传数据,退出登录一整套流程.并发的用户量多少,可自定义.这里不介绍录屏的方式,是自己写脚本去执行的. 1.安装loadRunner ...

  2. 【开发工具】 使用 Postman 进行接口测试 (配置全局 token,JWT可用)

    在前后端分离开发的项目中,使用postman来做接口测试会方便很多,然而因为JWT的鉴权,导致每半小时token都要更新一下,使测试变的很麻烦. 如果把token设置为全局变量,方便做测试,每次自动获 ...

  3. 题解-[SDOI2017]数字表格

    题解-[SDOI2017]数字表格 前置知识: 莫比乌斯反演</> [SDOI2017]数字表格 \(T\) 组测试数据,\(f_i\) 表示 \(\texttt{Fibonacci}\) ...

  4. spring入门学习

    开发步骤: 1.导入Spring开发的基本坐标 2.编写接口和实现类 3.创建Spring核心配置文件 4.在Spring核心配置文件中配置实现类 5.使用Spring的API获得Bean实例Bean ...

  5. STL——容器(List)List 的概念

    1. List 容器的基本概念 1. list 是一个双向链表容器,可高效的进行插入删除元素,他的原理在于每个元素都有两个指针来记录前后两个元素的地址,像火车车厢一样,list 中各个元素在物理存储单 ...

  6. Vue3源码解析(computed-计算属性)

    作者:秦志英 前言 上一篇文章中我们分析了Vue3响应式的整个流程,本篇文章我们将分析Vue3中的computed计算属性是如何实现的. 在Vue2中我们已经对计算属性了解的很清楚了,在Vue3中提供 ...

  7. MySQL 5.7.29安装配置

    一.环境准备(关闭防火墙) 1.清除已安装数据库 [root@mysql01 ~]# rpm -qa | grep mariadb mariadb-libs-5.5.35-3.el7.x86_64 [ ...

  8. SpringBoot集成基于tobato的fastdfs-client实现文件上传下载和删除

    1. 简介   基于tobato的fastdfs-client是一个功能完善的FastDFS客户端工具,它是在FastDFS作者YuQing发布的客户端基础上进行了大量的重构,提供了上传.下载.删除. ...

  9. 【面试专栏】ArrayList 非线程安全案例并提供三种解决方案

    1. 复现问题 import java.util.ArrayList; import java.util.List; import java.util.UUID; /** * 复现问题 * * @au ...

  10. CSS—— div+css

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...