從組件文檔引發的慘案 ◤1◢

来源:https://www.cnblogs.com/dahe1989/archive/2019/12/20/12071629.html
-Advertisement-
Play Games

公司目前有很多後臺管理系統,目前代碼量都越來越大,在開發的過程中,我們也秉承著提取公共組件,通過復用組件來減少開發工作量,隨著公共組件數量的增加,新同事想要快速瞭解公共組件如何使用,需要到具體的業務頁面中去看,這樣子學習組件的成本太大,於是就想給每個組件提供一個文檔,來解釋組件如何使用。 恰巧之前有 ...


公司目前有很多後臺管理系統,目前代碼量都越來越大,在開發的過程中,我們也秉承著提取公共組件,通過復用組件來減少開發工作量,隨著公共組件數量的增加,新同事想要快速瞭解公共組件如何使用,需要到具體的業務頁面中去看,這樣子學習組件的成本太大,於是就想給每個組件提供一個文檔,來解釋組件如何使用。

恰巧之前有同事分享過storybook,聽聞效果不錯,就準備嘗試一下~~

storybook

storybook,人如其名,它將實例化的組件稱之為story,不同組件的不同實例化組成了一本 ◤故事書◢。每個組件可以有多個故事,故事之間不同一般是因為入參不同,幻化出的組件不同功能。厲害的它還支持很多插件,來擴展這本故事書。

storybook界面

React項目集成storybook

在現有的項目集成storybook,最大的問題是需要將已有的webpack配置和storybook自己的webpack配置集成到一起。

安裝storybook

有兩種方式(手動和自動),具體可以參考官方文檔

我是採用的手動的方式,覺得比較可控一些。

npm install @storybook/react --save-dev

 

增加配置文件

在根目錄創建文件夾.storybook,然後創建config.js,這個配置文件主要是為了告訴storybook哪些文件是story文件。

import { configure } from '@storybook/react';
// 查找src目錄下尾碼是.stories.js的文件,就是story
configure(require.context('../src', true, /\.stories\.js$/), module);

 

合併webpack.config.js

storybook要載入你寫的組件,需要依賴你的webpack.config.js來編譯代碼,參考具體文檔

因為我們的項目是使用的ant.desgin pro搭建的,查找了一下居然有人解決過這個問題,就參考了github issues中的解決方法。

寫一個story

story其實就是引入組件,並實例化組件的過程,具體的代碼如下。

import React from 'react';
import {storiesOf} from '@storybook/react';
import { Button } from '@storybook/react/demo'; 

const stories = storiesOf('Button', module);

stories.add(
    'withText',
    () => {
        return <Button>Hello Button</Button>;
    }
).add(
    'withEmoji',() => {
        return <Button><span role="img" aria-label="so cool">

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 主要實現以下幾種簡單的動畫效果(其實原理基本相同): 1.勻速動畫:物體的速度固定 2.緩動動畫:物體速度逐漸變慢 3.多物體動畫 4.透明度動畫 效果實現: 1.勻速動畫(以物體左右勻速運動為例) 動畫效果主要是用定時器setInterval()來實現的,每隔幾毫秒讓物體移動一點距離,通過不斷調用 ...
  • 封裝緩動(變速)動畫函數 增加任意多個屬性&回調函數&層級&透明度 相較之前的,增加了2個判斷,第一個判斷是不是透明度,第二個判斷是不是zindex, 都不是,就只是普通屬性和之前一樣 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
  • 封裝緩動(變速)動畫函數 增加任意多個屬性&增加回調函數 回掉函數fn,在所有元素到達目的位置後,判斷是否傳入一個函數,有就調用 if(fn){fn()}; 這樣一次點擊,產生多個動畫 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
  • 藉助React,我們可以構建動態且高度交互的單頁應用程式,充分利用這種交互性的一種方法是通過條件渲染。 ...
  • 封裝緩動動畫函數 增加多個任意多個屬性 在原來緩動動畫函數,增加任意一個屬性的基礎上,做瞭如下改變 1. 原來function animate(element, attr, target),三個變數,改為用json對象來裝一對:屬性:目標位置的值,變為function animate(element ...
  • 這篇文章會為一個總結,一個大綱.我會在上面列舉一些前端該學習的東西. 1:面試之道 2:瀏覽器 3:網路協議 4:設計模式 5:工程化 6:性能優化 7:前端安全 8:自動化測試 9:工具調試 10:演算法與數據結構 11:小程式 12:微信公眾號 13:HTML 14:CSS 15:ECMScrip ...
  • JSON 是存儲和傳輸數據的格式。 JSON 經常在數據從伺服器發送到網頁時使用。 什麼是 JSON? JSON 指的是 JavaScript Object Notation JSON 是輕量級的數據交換格式 JSON 獨立於語言 * JSON 是“自描述的”且易於理解 * JSON 的語法是來自 ...
  • legend的data與series的name 兩者必須同時存在,且數量和文字內容必須一致。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...