天天看點

Semantic-UI的React實作(一):架構介紹

react元件化的ui庫

目前react元件化的ui有很多,這裡有很多已實作的react元件庫。如:

touchstonejs - react.js powered ui framework for developing beautifulhybrid mobile apps.

elemental ui

rsuite | 一個基于 react.js 的 web 元件庫

ant design of react - ant design

material-ui

react-bootstrap

react + foundation · foundation as react components

essence - react material design framework

react-mdl: react components for material design lite

belle - configurable react components with great ux

mui - material design css framework

grommet

react toolbox

react-blazecss 0.4.3 demo

pivotal ui: intro

bfd ui

但是我一直比較偏愛的semantic-ui不在這個清單中。雖然官方目前也在做相關的工作(戳這裡),但目前還沒有出穩定版本。個人覺得這正是一個練習的機會,将semantic-ui庫react元件化。

semantic-ui

semantic-ui是一套完全語義化設計的前端架構,使用起來靈活又友善,可以滿足多變複雜的頁面實作需求。從官方文檔(版本2.2)來看,主要有四類架構元素:

元素

組合

視圖

子產品

具體示例可參考官網。

基本分析

semantic-ui實作于語義化設計,各個類可以自由組合使用已實作頁面需求。每個元件的屬性定義大多類似,如button和icon,都有size或者color等常用屬性,而這些屬性可用公共輔助類來定義和聲明。

從實作上來講,元素、組合和視圖的大部分實作,都可以用純css聲明來達到效果,但子產品類的元件往往需要js的輔助以實作動态效果。考慮到這一點,元件實作大緻分為兩類實作:ui類和動效類。需要實作3dtransition的元件都繼承于動效類,剩餘隻需css聲明的元件繼承于ui類。當然動效類也同樣繼承于ui類。

Semantic-UI的React實作(一):架構介紹

uielement

uielement作為所有基礎ui元件的基類,主要負責以下幾類實作:

元素class的生成

元素事件回調的生成

基于semantic-ui的語義化實作,所有class類均由多個屬性拼裝組成,是以每個ui元件的屬性在元件内聲明即可,class類的生成由父類uielement負責。

amelement

amelement作為動效元件的父類,主要負責以下功能實作:

元件的show/hide接口調用

直接操作元件dom,生成transition的style

每個動效元件繼承amelement後,均将本元件的ref引用傳遞給父元件,由父元件統一調用并修改子元件的dom元素style屬性,以實作3dtransition效果。

propshelper

元件props的輔助類,用以生成元件的class。propshelper中有多個靜态方法:

createstyle:用以生成元件class定義

getdefaultprops:取得所有元件的通用props

每個元件在生成class定義是,隻需提供本元件的props以及屬性定義,即可生成對應的class定義。

作者:sheva

來源:51cto

繼續閱讀