Vue 集成 storybook

一、storybook 介紹

storybook

storybook是一個(gè)開(kāi)源的組件管理、文檔UI展示工具,用來(lái)在大型的項(xiàng)目中,讓團(tuán)隊(duì)成員一個(gè)可以知道到團(tuán)隊(duì)已開(kāi)發(fā)的組件,避免編寫(xiě)重復(fù)的組件,減少團(tuán)隊(duì)溝通時(shí)間和開(kāi)發(fā)成本

一、storybook 環(huán)境搭建

1. 依賴(lài)安裝

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

2.入口配置

在項(xiàng)目根目錄新建 .storybook/config.js 文件

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

3.自定義wepback配置

在項(xiàng)目根目錄新建 .storybook/webpack.config.js 文件

// 在這里你可以重寫(xiě)storybook 默認(rèn)的webpack配置
module.exports = async ({ config, mode }) => {
  // `mode` has a value of 'DEVELOPMENT' or 'PRODUCTION'

// 新加less語(yǔ)法加載器
  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跨域代理

在項(xiàng)目根目錄新建 .storybook/middleware.js 文件

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

5.相關(guān)插件介紹和使用

1. knobs

Knobs

knobs插件提供一個(gè)表單控制臺(tái),用戶(hù)可以通過(guò)表單控制臺(tái)來(lái)改變組件相關(guān)屬性,展示不同屬性下的組件

2.actions

actions

actions插件讓用戶(hù)在對(duì)組件的操作,可以反應(yīng)在底部的日志里面

3.storysource

storysource

addon插件可以讓你直接在界面上看到當(dāng)前sotry的源碼

4.docs

docs

addon-docs插件讓你可以為你的組件編寫(xiě)文檔

插件畫(huà)廊
knobs
actions
storysource
docs

5.插件引入

安裝相關(guān)依賴(lài)

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

在項(xiàng)目根目錄新建 .storybook/addons.js 文件

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

6.展示自己的組件

在項(xiàng)目根目錄下的stories文件夾中,新建一個(gè)任意名稱(chēng)的js文件

import Vue from 'vue';
// 這里導(dǎo)入你自己的組件,
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>'
});

最后在根目錄命令行啟動(dòng)storybook就搞定了

npm run storybook
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • MI-vant組件庫(kù) 打造一個(gè)內(nèi)部的組件庫(kù),在我們進(jìn)行代碼的重構(gòu),以及開(kāi)發(fā)新的功能的時(shí)候,抽離公共的組件,減少代碼...
    majunchang閱讀 4,112評(píng)論 0 15
  • 安裝vue腳手架: Node.js>=8.9沒(méi)有vue-cli3的先安裝一下: 安裝完后查看版本: 創(chuàng)建項(xiàng)目: 選...
    helloyoucan閱讀 10,741評(píng)論 0 7
  • 一、 組件component 1. 什么是組件? 組件(Component)是 Vue.js 最強(qiáng)大的功能之一。組...
    饑人谷_Leonardo閱讀 2,017評(píng)論 0 18
  • ## 框架和庫(kù)的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**。> > 庫(kù)(lib...
    Rui_bdad閱讀 2,961評(píng)論 1 4
  • Overview 今天科普一個(gè)有趣的前端開(kāi)源工具——Stroybook,一個(gè) UI 的可視化容器,可以視作組件庫(kù)的...
    anOnion閱讀 3,425評(píng)論 0 7