熵簡技術(shù)談 | 2B 場景下的前端組件庫換膚設計理念與實踐

導讀:一個統(tǒng)一构罗、規(guī)范的組件庫,能夠不斷沉淀設計師的思考智玻、降低設計與開發(fā)成本遂唧,保證產(chǎn)品在不斷發(fā)展的過程中,用戶體驗不被打斷尚困。同時蠢箩,熵簡科技作為一家深耕B端的服務商,其前端組件庫還需要快速賦能 2B 場景下的業(yè)務需求事甜。文本針對 2B 場景逝变,談一談熵簡前端團隊在構(gòu)建前端組件庫中的設計理念和實踐遂跟。

作者信息

本文出自熵簡科技大前端團隊,團隊致力于打造世界級的B端產(chǎn)品。主要工作包括搭建先進客峭、統(tǒng)一的前端基礎架構(gòu),建立嚴格的產(chǎn)品設計規(guī)范眼虱,探索前沿技術(shù)的業(yè)務落地,持續(xù)沉淀優(yōu)秀的前端案例宴卖,不斷提升各個產(chǎn)品線的客戶使用體驗及開發(fā)效率。

1邻悬、背景

前端組件化已經(jīng)成為一種主流症昏,一種共識。一個統(tǒng)一父丰、規(guī)范的組件庫肝谭,能夠不斷沉淀設計師的思考、降低設計與開發(fā)成本蛾扇,同時也可以降低用戶在不同產(chǎn)品模塊之間切換的學習成本攘烛,保證產(chǎn)品在不斷發(fā)展的過程中,用戶體驗不被打斷镀首。

熵簡科技是一家為企業(yè)客戶提供數(shù)據(jù)智能平臺的服務商坟漱,因此我們團隊在構(gòu)建前端組件庫時,除了需要考慮上面的需求以外更哄,同時還要兼容 2B 場景下的業(yè)務特征芋齿。

在2B場景下,很多客戶需要對產(chǎn)品進行私有化部署以及定制化改造成翩,客戶往往會對設計風格提出與自身公司文化背景相統(tǒng)一的定制化需求沟突,這時就需要我們的組件庫能夠在輸出效果穩(wěn)定可預期的同時,具備響應客戶需求變化的強大擴展性捕传。

為了達到上面的要求惠拭,在整個設計和開發(fā)過程中,我們一直遵循兩個原則:

? ? (1)原子化:類比物質(zhì)的分子組成結(jié)構(gòu)(原子構(gòu)成分子庸论,分子構(gòu)成物質(zhì))职辅,原子設計就是將頁面顆粒度分為原子、分子聂示、組織域携、模板、頁面的超細維度鱼喉,進行組件和組件的層層嵌套秀鞭。同樣我們在設計組件時將設計元素的顆粒度進一步精分、組合產(chǎn)生顏色搭配主題扛禽、形態(tài)組合主題等锋边,不同的主題結(jié)合產(chǎn)生最終的組件樣式。

? ?? (2)統(tǒng)一語義化命名:UI和前端統(tǒng)一規(guī)范各原子化"物料"的命名编曼,減少協(xié)作中的溝通成本豆巨。

2、2B場景下的設計原則

2.1 系統(tǒng)一致性原則

實際的項目開發(fā)通常需要在同一環(huán)境下整合多個產(chǎn)品系統(tǒng)掐场,組件庫的開發(fā)能很好地保證各個系統(tǒng)有一致的視覺語言往扔、交互操作規(guī)范贩猎。

2.2 敏捷開發(fā)原則

2B業(yè)務在POC階段需要有快速的視覺Demo輸出,因此原子化的組件設計與模塊化的組件開發(fā)配合顯得尤為重要萍膛。

最終吭服,我們希望能夠搭建起 產(chǎn)品/UI/前端 三方高效的協(xié)作流程,如下所示:


3蝗罗、UI團隊工作:?

3.1 定義并創(chuàng)建原子化變量

在設計的初始階段噪馏,先將“顏色”這個最基礎單位按其之后在項目中的使用意圖進行分組和命名,前端在設定不同組件的顏色屬性時也會以顏色名字的方式進行設定和修改绿饵。

3.2??UI基于Sketch的Symbol功能進行變量創(chuàng)建

sketch的symbol功能很好的為原子化提供了實踐可能性。在sketch文件中將最小顆粒度“原子(如顏色)”按照其使用意圖作為名稱進行命名瓶颠;顆粒度再復雜一級的“分子(如字體)”變量名則由typeface/weight/color/size的組合排列產(chǎn)生拟赊。

當進一步設計有功能屬性的基礎組件(如按鈕、列表等)時粹淋,組件內(nèi)的文字和顏色使用引用預定義好的“原子單位”吸祟,這也為日后樣式修改時確保組件一致性提供了一定的依據(jù)。

3.3?Sketch上傳Zeplin來完成設計與開發(fā)團隊的同步協(xié)作

zeplin作為sketch的“好基友”可以很好的實現(xiàn)將設計語言到開發(fā)語言的翻譯工作桃移。設計好的symbol通過 Sketch/Plugin/Zeplin/Export Selected Board上傳至zeplin的共享平臺屋匕。

在zeplin的styleguide欄目下以樹狀結(jié)構(gòu)來分類組件

zeplin內(nèi)嵌的symbol識別功能使得在產(chǎn)品業(yè)務相關的頁面中對于引用到的組件進行自動識別,方便開發(fā)人員識別原子化變量

4.前端團隊工作:

4.1?前端組件設計和開發(fā)原則

基于Sketch中的symbol功能借杰,前端也需要將組件進行原子化过吻,并根據(jù)symbol的變量命名將常用的大小、顏色創(chuàng)建為變量蔗衡。

前端組件根據(jù)功能以及顆粒度可以分為“基礎組件”和“高階組件”纤虽。基礎組件一般是頁面中顆粒度中最小也是最常用的組件绞惦,例如input逼纸,button等;高階組件通常是由基礎組件進行一定的變形济蝉、組合或兩者兼有而形成的杰刽;而高階組件+基礎組件最終組成了完整的頁面。 為了滿足2B場景下的整體風格替換王滤,所有組件在開發(fā)的時候要將用到的顏色贺嫂、字體等"原子"用變量的方式引入。

在目前前端開發(fā)中雁乡,樣式的變量創(chuàng)建方式主要有兩種:一是基于css原生支持的自定義變量涝婉,二是基于less、scss等css預編譯器蔗怠《胀洌考慮到自定義變量可能存在的瀏覽器兼容性問題吩跋,最終我們組件庫采用了less作為樣式開發(fā)的語言。less 是一門 CSS 預處理語言渔工,除了之前提到的變量功能锌钮,還有嵌套、混合(mixin)引矩、函數(shù)等方便的功能梁丘。

4.2?前端組件開發(fā)實踐

至此,前端開發(fā)可以根據(jù)之前zeplin上的StyleGuide旺韭,將常用的變量進行定義氛谜,并在組件開發(fā)中使用:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?less變量定義

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 組件庫變量應用

除此之外,我們利用less的mixins特性封裝了文字樣式混合区端,可通過傳參編譯成相應代碼值漫,從而減少重復代碼并且方便開發(fā)使用。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?定義mixin


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mixin的使用

4.3? Less變量覆蓋與自動注入

當我們按照以上原則完成組件及頁面的開發(fā)织盼,就可以非常方便的解決業(yè)務場景下遇到的“換膚“問題:只需要根據(jù)主題修改相關變量即可完成整個項目的主題更換杨何。那在項目中,在不改變組件庫變量文件的前提下沥邻,如何才能修改樣式變量呢危虱?最終我們采用less變量覆蓋以及變量文件自動注入的方式解決了這個問題。

(1)less變量覆蓋

(2)?less自動注入

less自動注入目前我們有兩種方案:一是通過less-loader提供的modifyVars唐全、二是通過style-resources-loader來實現(xiàn)

less-loader實現(xiàn)如下:

style-resources-loader實現(xiàn)如下:

5埃跷、總結(jié)設計規(guī)范

基于原子化設計理念,針對2B場景下的換膚需求邮利,我們提出并完善了這套在構(gòu)建時即可實現(xiàn)的換膚方案捌蚊。這套理論可以應用于網(wǎng)站的整體開發(fā)中并已經(jīng)過實踐驗證,最終能夠?qū)崿F(xiàn)網(wǎng)站整體換膚的效果近弟。

關于熵簡科技

熵簡科技是一家數(shù)據(jù)智能公司缅糟,熵簡科技圍繞“數(shù)據(jù)采集-數(shù)據(jù)融合-數(shù)據(jù)計算-業(yè)務決策”的各個場景,運用自主研發(fā)的數(shù)據(jù)中臺引擎祷愉,通過端到端的數(shù)據(jù)中臺體系切實解決企業(yè)需求痛點窗宦。

更多技術(shù)干貨文章,請關注熵簡科技的公眾號「熵簡學院」

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末二鳄,一起剝皮案震驚了整個濱河市赴涵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌订讼,老刑警劉巖髓窜,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡寄纵,警方通過查閱死者的電腦和手機鳖敷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來程拭,“玉大人定踱,你說我怎么就攤上這事∈研” “怎么了崖媚?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恤浪。 經(jīng)常有香客問我畅哑,道長,這世上最難降的妖魔是什么水由? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任荠呐,我火速辦了婚禮,結(jié)果婚禮上绷杜,老公的妹妹穿的比我還像新娘。我一直安慰自己濒募,他們只是感情好鞭盟,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瑰剃,像睡著了一般齿诉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上晌姚,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天粤剧,我揣著相機與錄音,去河邊找鬼挥唠。 笑死抵恋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的宝磨。 我是一名探鬼主播弧关,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼唤锉!你這毒婦竟也來了世囊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤窿祥,失蹤者是張志新(化名)和其女友劉穎株憾,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晒衩,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡嗤瞎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年墙歪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猫胁。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡箱亿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弃秆,到底是詐尸還是另有隱情届惋,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布菠赚,位于F島的核電站脑豹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏衡查。R本人自食惡果不足惜瘩欺,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拌牲。 院中可真熱鬧俱饿,春花似錦、人聲如沸塌忽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽土居。三九已至枣购,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間擦耀,已是汗流浹背棉圈。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留眷蜓,地道東北人分瘾。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像吁系,于是被迫代替她去往敵國和親芹敌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345