Vue 集成 storybook的方法

所属分类: 网络编程 / JavaScript 阅读数: 1383
收藏 0 赞 0 分享

一、storybook 介绍

storybook是一个开源的组件管理、文档UI展示工具,用来在大型的项目中,让团队成员一个可以知道到团队已开发的组件,避免编写重复的组件,减少团队沟通时间和开发成本

二、storybook 环境搭建

1. 依赖安装

npm install @storybook/vue --save-dev
npm install vue-loader vue-template-compiler @babel/core babel-loader babel-preset-vue --save-de

2.入口配置

在项目根目录新建 .storybook/config.js 文件##.storybook/config.js#

import { configure } from '@storybook/vue'
// 加载所有的组件故事
configure(require.context('./stories', true, /\.js$/), module)

3.自定义wepback配置

在项目根目录新建 .storybook/webpack.config.js 文件

// 在这里你可以重写storybook 默认的webpack配置
module.exports = async ({ config, mode }) => {
 // `mode` has a value of 'DEVELOPMENT' or 'PRODUCTION'
 
// 新加less语法加载器
 config.module.rules.push({
  test: /\.less$/,
  use: ["style-loader", "css-loader", "less-loader", {
   loader: 'style-resources-loader',
   options: {
    patterns: [
     path.resolve(__dirname, '../src/assets/style/common/mixins.less')
    ]
   }
  }]
 })
 
 // 新增@别名
 config.resolve.alias = Object.assign(config.resolve.alias, {
  '@': path.resolve(__dirname, '../src')
 })
 
 // Return the altered config
 return config
}

4.ajax跨域代理

在项目根目录新建 .storybook/middleware.js 文件

const proxy = require('http-proxy-middleware')
module.exports = function expressMiddleware(router) {
 router.use(
  '/api',
  proxy({
   target: `http://locahost:5000`, // 服务器 api地址
   changeOrigin: true
  })
 )

5.相关插件介绍和使用 (1)knobs

knobs插件提供一个表单控制台,用户可以通过表单控制台来改变组件相关属性,展示不同属性下的组件

(2)actions

actions插件让用户在对组件的操作,可以反应在底部的日志里面

(3)storysource

addon插件可以让你直接在界面上看到当前sotry的源码

(4)docs

addon-docs插件让你可以为你的组件编写文档

(5)插件引入

安装相关依赖

npm install @storybook/addon-knobs @storybook/addon-actions @storybook/addon-storysource @storybook/addon-docs --dev

在项目根目录新建 .storybook/addons.js 文件

import '@storybook/addon-knobs/register';
import '@storybook/addon-actions/register';
import '@storybook/addon-storysource/register';
import '@storybook/addon-docs/register';

6.展示自己的组件

在项目根目录下的stories文件夹中,新建一个任意名称的js文件

import Vue from 'vue';
// 这里导入你自己的组件,
import MyButton from '@/components/Button.vue';
 
export default { title: 'Button' };
 
export const withText = () => '<my-button>with text</my-button>';
 
export const withEmoji = () => '<my-button>😀 😎 👍 💯</my-button>';
 
export const asAComponent = () => ({
 components: { MyButton },
 template: '<my-button :rounded="true">rounded</my-button>'
});

最后在根目录命令行启动storybook就搞定了

npm run storybook
更多精彩内容其他人还在看

AngularJs IE Compatibility 兼容老版本IE

本文主要介绍AngularJs IE Compatibility 兼容老版本IE的问题及解决办法,有兴趣的小伙伴可以参考下
收藏 0 赞 0 分享

AngularJs Modules详解及示例代码

本文主要介绍AngularJs Modules的相关知识,这里整理了详细的资料及简单示例代码,有兴趣的朋友可以参考下
收藏 0 赞 0 分享

AngularJs Scope详解及示例代码

本文主要介绍AngularJs Scope的知识,这里整理了详细资料及示例代码,有兴趣的小伙伴可以参考下
收藏 0 赞 0 分享

node.js中module.exports与exports用法上的区别

Node.js 引入了模块(Module)概念,一个模块可以通过module.exports 或 exports 将函数、变量等导出,以使其它 JavaScript 脚本通过require() 函数引入并使用。那么node.js中module.exports与exports有什么
收藏 0 赞 0 分享

基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)

这篇文章主要介绍了基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)

最近做了一个项目,其中有需求要求实现发送短信验证码后倒计时功能,其中有个难点:要求关闭页面也进行倒计时。好吧,下面小编把jquery 发送验证码倒计时的实现代码分享给大家,大家可以参考下
收藏 0 赞 0 分享

js绘制购物车抛物线动画

这篇文章主要为大家详细介绍了js绘制购物车抛物线动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

vue.js入门教程之绑定class和style样式

小编之前介绍了通过vue.js计算属性,不知道大家都学会了吗。那这篇文章中我们将一起学习vue.js实现绑定class和style样式,有需要的朋友们可以参考借鉴。
收藏 0 赞 0 分享

纯JS实现可拖拽表单的简单实例

下面小编就为大家带来一篇纯JS实现可拖拽表单的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

js实现StringBuffer的简单实例

下面小编就为大家带来一篇js实现StringBuffer的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多