精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

BI 數據可視化平臺建設(2)—篩選器組件升級實踐

大數據
本文主要介紹了BI數據可視化平臺建設中比較核心的篩選器組件, 涉及組件分類、組件庫開發等升級實踐經驗,通過分享一些對交互和業務耦合度高的組件開發迭代的思考,希望可以給正在做組件重構解耦的讀者帶來啟發。

一、引言

BI產品通常包含大量復雜的數據信息,需要對其進行快速和準確的處理和分析。篩選器可以幫助BI產品的用戶快速地定位所需信息,并從海量數據中篩選出有用的數據,以便進行深入的分析和決策。敏捷BI作為公司內部用戶數最多的可視化平臺,隨著平臺的業務增長和版本迭代,其篩選器功能也越來越豐富和完善,舊的設計架構也顯得越來越臃腫且難以維護,為了提高篩選器使用的穩定性和降低后續迭代維護成本,篩選器的架構升級已經不可避免了,本文主要給大家介紹一下篩選器組件的架構升級實踐經驗。

二、前期設計

2.1 組件選型

圖片

前期篩選器組件的職責和交互比較簡單,主要是對圖表數據進行單向的數據過濾,并沒有應用到其他的業務場景中,所以前期的組件設計主要以 業務組件 的思路進行開發實現。

2.2 組件分類

組件類型主要可以分為業務組件和通用組件兩種,它們在組件的狀態管理和界面渲染的設計和實現上是完全不同的。

圖片

但無論是業務組件或者通用組件都具備組件本質所包含的三個性質 擴展、通用、健壯

圖片

  • 擴展性:在原有組件基礎上可 二次封裝 擴展成新的組件符合設計的開閉原則。
  • 通用性:根據組件接受的參數和組件中與業務的解耦比來衡量組件的通用性,并不是通用性占比100%的組件就是最好的組件,需要根據 不同的場景 分析。
  • 健壯性:避免組件中參數處理和函數執行過程可能出現的奔潰和錯誤導致程序的直接掛斷,單測以對組件內部 做好邊界處理,異常錯誤的捕獲來衡量這一標準。

因此兩種組件類型沒有絕對優劣之分,重要的是在保證組件設計的基本原則不變的情況下,根據不同的業務場景和需求選擇合適的類型 。無論哪種組件,隨著不斷擴展,使其通用性提升,必然就會降低組件的易用性質;而不斷豐富一個組件,也會導致其組件代碼過長、組件使命不單一、不易讀、不易維護;因此組件設計除了要保證組件的基本性質,還要通過明確組件職責、組件拆分粒度以及良好的代碼結構和Api設計規范對組件的迭代進行約束,避免代碼邏輯的過度疊加和膨脹。

2.3 背景痛點

舊版篩選器組件設計存在維護成本高且問題BUG多等問題,主要由兩個原因造成,第一個是業務發展,隨著業務的快速增長,篩選器組件的功能也越來越豐富和完善,由原來的單一功能升級成可以支持數據預警、個性化分析等多種業務場景的核心模塊;第二個是缺乏規范約束,主要是缺少良好的代碼結構和清晰的組件職責等規范約束,導致業務邏輯過度疊加,粒度拆分不合理,文件多,且文件名不規范。最終導致了篩選器組件的穩定性越發不可控。

圖片

圖片

由于前期設計不合理和缺乏規范約束,篩選器組件經過了一段時間的野蠻式迭代擴展帶來了以下的痛點問題

  • 重復代碼多,復用性差:相同的業務邏輯需要維護多份代碼,導致出現bug的概率大大增加,后期維護成本增加;
  • 業務耦合度高,缺乏設計模式進行管理:更新迭代過程中處理邏輯需要兼容多種場景代碼越來越復雜,導致問題難以跟蹤,難以定位問題意味著你可能需要花大部分的時間處理問題;
  • 編碼風格不一致,維護成本高: 項目主要技術棧是Vue,但是代碼風格有大部分格使用的React的jsx形式進行開發;項目存在多人維護,個人技術參差不齊;導致后續學習成本增加;
  • 組件嵌套層級深,存在雙向數據流:不符合Vue 單向數據流狀態管理理念,無法追蹤局部狀態的變化,增加了出錯時 debug 的難度,經常出現修改一個模塊bug而引起其他模塊bug的情況。

三、新版架構設計

3.1 設計思路

舊版的組件隨著業務發展迭代,已經混雜著大量的業務邏輯,組件耦合嚴重,職責也越發不清晰,因此為了合理的劃分組件職責和清晰代碼結構,新的架構設計將基于 通用組件 的設計思路,將篩選器組件抽離出BI業務;從BI項目的架構、技術選型、文檔使用等多個方面進行考慮,在原來的基礎上改造太復雜,可行性低,所以搭建了一個新的項目,將之前所有的篩選器組件遷移到新項目上,穩定后替換BI項目上所有舊版篩選器組件,后續統一只需維護一個組件庫(bi-filters)。

圖片

3.2 實現方案

篩選器組件庫(bi-filters)主要 基于Vue CLI 的 開發/構建目標/庫 能力以及 Lerna 包管理工具 進行設計開發,這種組件庫設計集成了以下特點:

  • 按需引入:每個UI組件都是一個npm包,多語言、工具和樣式都是自成體系的npm包,可被業務或UI組件靈活引用,同時天然支持按需加載。
  • 配置簡單:如果需要進行構建處理,那么每個npm包可單獨進行構建配置,配置變得更加簡單。結合Vue CLI的構件庫能力,對于簡單UI組件的構建幾乎可以做到webpack零配置。
  • 獨立部署:組件庫的版本迭代可以更快,不需要進行整體構建,每個組件可單獨快速發布。

1. 利用 Lerna工具進行多包管理,快速對組件庫進行版本發布

圖片

組件庫目錄結構:

圖片圖片

圖片圖片

2. 組件設計和實現

參考 裝飾器設計模式,對組件進行抽象設計,從而達到業務狀態與 UI 狀態隔離,UI 狀態與交互呈現隔離的目的。具體實現是先按功能將組件拆成展示層,邏輯層,容器層,達到組件分層可復用。再通過

$attrs/$listeners對antd組件進行二次封裝,抽離成在篩選器組件庫內的公共組件,達到交互可組合。最終使得組件邊界清晰,符合設計規范中提到的開閉原則、單一職責原則、里氏替換原則

以文本下拉篩選器組件(TextDropDownFilter)實現為例:

圖片

(1)按功能將組件拆分成 容器層、邏輯層(搜索框邏輯層、 下拉列表邏輯層 )、展示層(搜索框展示層、下拉列表展示層):

圖片圖片

圖片圖片

(2)BI項目中使用 :引入篩選器組件后, 在BI應用層處理業務場景,將處理業務后的狀態信息通過 Vue 插槽(Slots)的方式傳遞給底層的篩選器組件 。

<!-- page.vue一 -->  
<TextDropDownFilter>
  <template #addonSearchAfter>
    <!-- 業務場景一 -->            
    <a-tooltip v-if="xxx">
       <BIIcon type="icon-jilian" class="btn-jilian" v-show="xxx"></BIIcon>
    </a-tooltip>
    <!-- 業務場景二 -->             
    <a-tooltip v-if="xxx">
       <AIcon type="warning" theme="filled" class="btn-warning"></AIcon>
    </a-tooltip>
  </template>  
</TextDropDownFilter>

(3)搜索框邏輯層:接收業務處理后的狀態,進行不同的UI組合展示

<!-- SearchHandler.vue一 -->  
<template>
  <div class="bd-search" :class="{ 'active': inputActive }">
    <!-- 基礎搜索框組件 一 --> 
    <Search
      v-bind="$attrs"
      :searchValue="searchValue"
      :placeholder="placeholder"
      @searchItem="handleSearchItem"
      @pressEnter="handlePressEnter"
      @focus="handleFocus"
      @blur="handleBlur"
    >
    </Search>
    <!-- 業務層傳入的UI 一 -->  
    <slot name="addonSearchAfter"></slot>
  </div>
</template>

(4)搜索框展示層:由 antd 基礎組件組成,提供交互單一且可復用的UI組件

<!-- Search.vue一 -->    
<template>
  <AInput
    class="common-search-input"
    :placeholder="placeholder"
    :value="searchValue"
    allow-clear
    @change="change"
    v-on="$listeners"
 
    @pressEnter="$emit('pressEnter', $event)"
  >
    <AIcon slot="prefix" type="search" />
  </AInput>
</template>

3. 最后利用 Vue CLI 的構建庫功能,對不同類型的篩選器組件進行單獨構建打包

vue cli 的構建庫能力可以通過 --target 選項指定不同的構建目標。它允許你將相同的源代碼根據不同的用例生成不同的構建。

圖片

圖片

在組件庫項目的 packages 目錄下,每一個篩選器組件的目錄下都需要創建 package.json文件,用于組件的構建信息配置:

{
  "name": "@bigdata/TextDropDownFilter",  //包名
  "version": "0.0.0",                     // 版本號
  "private": false,                       // 為true時不會被發布
  "main": "dist/編譯文件名.umd.min.js",
  "scripts": {
    "build": "vue-cli-service build --target lib --name 編譯文件名 --dest dist ./index.js",
    "lint": "",
    "test:unit": ""
  },
  "files": [
    "dist"
  ],
  "author": "",
  "license": "ISC",
  "description": ""
}

四、效果收益

1. BI項目整體代碼量減少,組件目錄結構清晰,只需要專注維護業務邏輯

圖片

2. BI業務抽離后,篩選器組件可進行獨立維護迭代,減少代碼耦合,只需專注功能交互和性能優化,提高組件穩定性。

圖片

五、總結

從上述的升級過程可以看出,組件的抽象與抽象粒度是沒有一成不變的統一標準,也沒有對與錯。組件的設計更多的應該去關注如何適配不同的業務場景和需求要求,追求更多的是“適合”。有的時候,同樣的業務場景,組件粒度的標準也會隨業務場景變化而變化,甚至可能隨場景增加而持續重構,因此為了代碼更好的維護和分層,以及避免代碼邏輯的過度疊加和膨脹,必須制定一些組件抽象的規范加以約束。總的來說,組件開發的方法論可能是相對中立和普適的,但組件庫的整體建設方案,與所在的行業和業務有很大的關系。不同的行業領域,對交互展現的掌控程度是不一樣的,因此設計組件庫方案的時候,應該優先從產品項目的集成關系角度出發看待問題,這樣可以保證業務的拓展和可用性盡可能不被技術方案限制。

責任編輯:龐桂玉 來源: vivo互聯網技術
相關推薦

2025-07-17 09:00:57

2023-11-09 08:38:25

交叉表組件大數據

2021-03-19 18:33:52

中信銀行網絡安全

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2023-04-17 07:32:41

2022-06-29 08:28:58

數據可視化數據可視化平臺

2017-10-14 13:54:26

數據可視化數據信息可視化

2021-07-27 08:29:33

可視化組件商店H5-Dooring

2021-11-19 08:30:39

H5-Dooring 可視化組件商店

2021-09-27 08:31:01

數據可視化柱狀圖折現圖

2020-07-22 10:30:54

數據可視化分析平臺分析工具

2023-11-30 09:34:14

數據可視化探索

2020-12-29 08:04:16

可視化地圖組件日歷組件

2017-10-25 13:04:10

數據可視化信息可視化數據圖表

2020-03-07 21:48:46

物聯網可視化技術設計

2024-03-22 08:21:48

可視化搭建平臺組件商店H5-Dooring

2010-09-07 16:28:58

DB2 空間數據

2023-09-13 07:19:46

數據開發平臺治理平臺

2015-08-20 10:00:45

可視化
點贊
收藏

51CTO技術棧公眾號

欧美色窝79yyyycom| 91成人精品视频| 亚洲 欧美综合在线网络| 国产一区免费| 伊人成人在线观看| 日本美女xxx| 日韩国产网站| 亚洲精品日韩一| 久久综合九色综合网站| 中文字幕免费播放| 99精品热视频只有精品10| 亚洲欧美精品一区二区| 肉色超薄丝袜脚交| 成人午夜视屏| 洋洋av久久久久久久一区| 欧美日韩一区二区三| jizz中国少妇| 久久精品亚洲| 欧美精品性视频| 最新中文字幕av| 老司机aⅴ在线精品导航| 欧美日韩一区二区三区不卡 | 极品白嫩少妇无套内谢| 成人私拍视频| 欧美日韩美女在线观看| 国产精品视频一二三四区| 超碰免费97在线观看| 国产成人在线影院| 国产精品久久一区| av大全在线观看| 狠狠噜噜久久| 欧美精品生活片| 可以免费看av的网址| 嫩草影视亚洲| 日韩精品在线影院| 国产精品一区二区人妻喷水| 精品成人18| 欧美美女bb生活片| 亚洲免费看av| 日韩精品一区二区三区av| 欧美午夜xxx| 你懂的av在线| 91桃色在线观看| 夜夜嗨av一区二区三区中文字幕| 国产福利在线观看| 国产白丝一区二区三区 | 在线欧美日韩国产| 青青青青草视频| 色呦呦在线观看视频| 中文字幕一区二区三中文字幕| 秋霞久久久久久一区二区| 亚洲三级黄色片| eeuss影院一区二区三区| 99re在线| 亚洲精品久久久蜜桃动漫| 国产一二精品视频| 亚洲一区二区三区香蕉 | 黑人精品一区| 一本一道久久a久久精品| 男女激情无遮挡| 性国裸体高清亚洲| 欧美三级欧美成人高清www| 国产精品12345| 男女羞羞在线观看| 欧美日韩在线观看视频| 男人亚洲天堂网| 国精产品一区二区三区有限公司| 色综合久久久久久久久久久| 国产性生交xxxxx免费| 99九九久久| 制服视频三区第一页精品| 国产精品久久久久久9999| 美女日韩一区| 亚洲成人网在线| 国产一级伦理片| 欧美**字幕| 中文字幕日韩欧美精品在线观看| 成人黄色短视频| 欧美福利影院| …久久精品99久久香蕉国产| 无码一区二区三区| 久久av中文字幕片| 国产精品久久国产三级国电话系列| 欧美一区二区三区激情| 99精品欧美一区二区三区小说 | youjizz在线播放| 最新久久zyz资源站| 国产精品视频二| 北岛玲heyzo一区二区| 欧美日韩精品一区二区在线播放| 肉色超薄丝袜脚交| 午夜精品福利影院| zzijzzij亚洲日本成熟少妇| 日本中文字幕免费| 青娱乐精品视频| 成人av影视在线| 国产在线视频福利| 依依成人精品视频| 激情综合网婷婷| 69堂免费精品视频在线播放| 欧美一区二区三区喷汁尤物| 女~淫辱の触手3d动漫| 亚洲第一偷拍| 国产国语刺激对白av不卡| av资源免费看| 国产日产欧美一区二区三区| 天堂а√在线中文在线| 69久成人做爰电影| 日韩欧美高清dvd碟片| 国产精品一区二区久久久| 99热这里精品| 国产日韩欧美精品综合| 97在线免费视频观看| 精品三区视频| 亚洲国产日韩精品在线| 老司机精品免费视频| 激情欧美日韩一区| 国产欧美欧洲在线观看| 青青草在线免费视频| 亚洲猫色日本管| 欧美两根一起进3p做受视频| 91成人精品在线| 色七七影院综合| 狠狠人妻久久久久久综合| 国产成人精品影视| 亚洲欧美成人一区| 国产精品伦理| 日韩av在线导航| 久久久久成人精品无码| 精品无人区卡一卡二卡三乱码免费卡| 麻豆精品传媒视频| 超碰在线99| 精品久久久久久久久久久久久久久久久 | 香蕉视频网站在线观看| 欧美日韩国产一区中文午夜| 小日子的在线观看免费第8集| 欧美日一区二区| 欧美尤物巨大精品爽| 高清毛片aaaaaaaaa片| 中文字幕综合网| 羞羞的视频在线| 日韩欧美高清在线播放| 国产精品美乳在线观看| 激情小视频在线观看| 欧美性极品少妇精品网站| 荫蒂被男人添免费视频| 伊人久久大香线蕉综合热线| 成人三级在线| 免费不卡av| 精品国产乱码久久| 国产无码精品久久久| 岛国精品在线观看| 福利视频一区二区三区四区| 成人av婷婷| 亚洲变态欧美另类捆绑| 顶臀精品视频www| 狠狠色丁香久久婷婷综合丁香| 亚洲国产欧美不卡在线观看| 99蜜月精品久久91| 日韩有码在线观看| 国产乱码精品一区二三区蜜臂| 中文字幕日韩av资源站| 在线播放黄色av| 欧美亚洲不卡| 精品视频一区二区三区四区| 小视频免费在线观看| 亚洲人成电影网站| 中文字幕视频一区二区| 中文字幕中文字幕一区二区| 天天操精品视频| 国内精品久久久久久久影视麻豆| 国产精品国产亚洲精品看不卡15| 女人高潮被爽到呻吟在线观看| 日韩精品在线观看视频| 中文字幕第2页| 亚洲三级久久久| 中国特级黄色大片| 久久天堂精品| 免费观看中文字幕| 北条麻妃在线一区二区免费播放| 国产69久久精品成人| 国产精品一区二区三区四区色| 欧美女孩性生活视频| 免费在线观看国产精品| 91视频91自| 激情五月俺来也| 欧美日韩免费| 欧美日韩综合另类| 国产aⅴ精品一区二区四区| 国产最新精品视频| h视频在线播放| 日韩免费视频线观看| 最新中文字幕一区| 综合激情成人伊人| 亚洲国产精品自拍视频| 蜜桃av一区二区在线观看| 欧美国产视频一区| 精品国产乱码久久久| 亚洲自拍另类欧美丝袜| 黄色漫画在线免费看| 日韩网站免费观看高清| 日本激情一区二区| 欧美精品日韩精品| 国产精品免费精品一区| 亚洲视频免费在线| 欧美做受xxxxxⅹ性视频| 国产乱子轮精品视频| 黄色国产精品视频| 黄色一区二区三区四区| 亚洲国产成人不卡| 玖玖玖免费嫩草在线影院一区| 国产欧美韩国高清| 久久人体大尺度| 欧美日韩第一视频| 色网站在线看| 亚洲欧美日本精品| 国产丰满果冻videossex| 91成人国产精品| 日韩免费不卡视频| 亚洲丝袜精品丝袜在线| 蜜桃av乱码一区二区三区| av男人天堂一区| 精品人妻人人做人人爽夜夜爽| 日本视频一区二区三区| 男人操女人免费软件| 狠狠久久婷婷| 青青在线视频免费观看| 偷偷www综合久久久久久久| 日本一区视频在线| 男人的天堂久久| 国产精品乱码视频| 涩涩屋成人免费视频软件| 国产有码在线一区二区视频| 国产v综合v| 日韩av免费看网站| 欧美日韩在线观看首页| 久久青草福利网站| 青草视频在线免费直播 | 麻豆精品久久久| 粉嫩虎白女毛片人体| 亚洲一区视频| 99视频在线免费播放| 亚洲精品欧美| 国产二区视频在线| 伊人成人在线视频| 国产v片免费观看| 亚洲日本欧美| 免费成人在线视频网站| 夜久久久久久| 丁香啪啪综合成人亚洲| 欧美中文日韩| 免费日韩中文字幕| 久久久久久9| 老头吃奶性行交视频| 日本一不卡视频| 国产精品区在线| 国产一区二区三区免费播放| 中文字幕在线视频一区二区三区| 激情都市一区二区| 最好看的中文字幕| 成人av在线播放网站| 添女人荫蒂视频| 久久伊人中文字幕| 午夜时刻免费入口| 国产精品久久久久久久久免费樱桃| 国产三级aaa| 亚洲男同1069视频| 久久综合色综合| 五月天一区二区| 精品久久久久久久久久久久久久久久 | 在线国产伦理一区| 你懂的国产精品| 无码粉嫩虎白一线天在线观看 | 欧美三级特黄| 欧美久久久久久久久久久久久| 欧美一级久久| 亚洲一级免费观看| 国产精品一区二区在线观看不卡 | 国产又粗又黄又爽| 日韩欧美电影在线| 香蕉视频免费看| 最新的欧美黄色| 人人超在线公开视频| 欧美亚洲成人xxx| 亚洲国产91视频| 国产精品大全| 国产尤物久久久| 吴梦梦av在线| 国产精品美女| 亚洲第一天堂久久| 9久草视频在线视频精品| 欧美 日韩 国产 成人 在线观看| 一区在线播放视频| 日本少妇在线观看| 欧美日韩在线精品一区二区三区激情| 99久久国产免费| 日韩精品在线电影| 在线观看男女av免费网址| 欧美制服第一页| 国产午夜精品一区在线观看| 蜜桃999成人看片在线观看| 午夜精品一区二区三区国产 | 国偷自拍第113页| 欧美日韩一区二区三区高清| 天堂av中文字幕| 久久精品久久精品亚洲人| 高清毛片在线观看| 91牛牛免费视频| 国产99久久久国产精品成人免费| 日本xxx免费| 日本欧美一区二区| 女同性恋一区二区三区| 亚洲靠逼com| 精品乱码一区内射人妻无码| 亚洲国产一区自拍| 国产精品va在线观看视色| 国产精品www色诱视频| 久久1电影院| 麻豆一区二区三区在线观看| 日本不卡123| 成人网站免费观看| 亚洲一区欧美一区| 国产精品久久婷婷| 亚洲新中文字幕| 欧美三级网站| 狠狠色综合一区二区| 欧美精品一区二区三区久久久竹菊| 丁香婷婷激情网| 久久新电视剧免费观看| 国产一级一级片| 日韩欧美一二三| a级在线观看| 亚洲自拍另类欧美丝袜| 日韩欧美中字| 欧美一级特黄a| 国产欧美日韩卡一| 老熟妇仑乱一区二区av| 亚洲精品在线视频| 一二三四视频在线中文| 国产一区二区不卡视频| 伊人久久婷婷| 男女一区二区三区| 亚洲国产你懂的| 亚洲免费成人在线| 欧美高清videos高潮hd| 日本一区二区三区视频在线看| 免费观看中文字幕| 国产精品中文有码| 麻豆亚洲av成人无码久久精品| 欧美一区日本一区韩国一区| av在线free| 成人xxxxx色| 一本色道久久综合亚洲精品不| 欧美肉大捧一进一出免费视频| 五月天亚洲精品| 免费黄色片在线观看| 热久久99这里有精品| 久久99精品久久久久久园产越南| 97在线免费公开视频| 久久精品夜夜夜夜久久| 国产天堂第一区| x99av成人免费| 日韩高清在线观看一区二区| 老司机激情视频| 91视频免费看| 亚洲精品一区二区二区| www.欧美精品一二三区| 国产精选久久| 日韩国产一级片| 久久久久青草大香线综合精品| 日本视频www色| 不卡av在线网站| 狼人精品一区二区三区在线| 任你操这里只有精品| 中日韩免费视频中文字幕| 91在线精品入口| 国产+成+人+亚洲欧洲| 红桃视频在线观看一区二区| 911福利视频| 亚洲地区一二三色| 精品99又大又爽又硬少妇毛片| 国产精品美女网站| 欧美日韩国产免费观看| 极品粉嫩小仙女高潮喷水久久| 欧美伊人久久久久久久久影院| 成人福利在线观看视频| 久久99精品久久久水蜜桃| 日本va欧美va精品| 欧美成人综合色| 亚洲免费中文字幕| 久久久久毛片免费观看| 欧美三级在线观看视频| 国产精品成人一区二区艾草| 欧美视频一二区| 国产精品一区二区三| 激情一区二区| 天堂av免费在线| 日韩成人在线电影网| 在线免费观看亚洲| 免费黄色福利视频|