当前位置: 首页 > 科技观察

Semantic-UI的React实现(一):架构介绍

时间:2023-03-12 16:19:36 科技观察

React组件化UI库目前有很多React组件化UI,这里有很多实现的React组件库。例如:TouchstoneJS-React.js支持的UI框架,用于开发漂亮的混合移动应用程序。基本用户界面RSuite|基于React.js的Web组件库React的AntDesign-AntDesignMaterial-UIReact-BootstrapReact+FoundationFoundationasReactcomponentsEssence-ReactMaterialDesignFrameworkReact-MDL:ReactComponentsforMaterialDesignLiteBelle-ConfigurableReactComponents具有出色的UXMUI-MaterialDesignCSSFrameworkGrommetReactToolboxreact-blazecss0.4.3DemoPivotalUI:BFDUI简介但我一直在比较首选的语义UI不在此列表中。虽然官方目前正在做相关工作(点此),但目前还没有稳定的版本。个人感觉这只是一个实践和组件化Semantic-UI库React的机会。Semantic-UISemantic-UI是一套完全语义化设计的前端框架,使用灵活方便,能够满足多变复杂的页面实现需求。从官方文档(2.2版本)来看,框架元素主要有四种:ElementCompositionView模块的具体例子可以参考官网。基本分析Semantic-UI在语义设计上实现,各个类可以自由组合使用实现的页面需求。每个组件的属性定义大多是相似的,比如Button和Icon,它们有共同的属性比如size或者color,这些属性可以通过公共辅助类来定义和声明。在实现上,大部分元素、组合、视图的实现都可以通过纯CSS声明来实现,但是模块类的组件往往需要js的辅助才能实现动态效果。考虑到这一点,组件实现大致分为两类:UI和动画。需要实现3DTransition的组件全部继承自动态类,其余只需要CSS声明的组件继承自UI类。当然,动画类也继承自UI类。UiElementUiElement作为所有基础UI组件的基类,主要负责以下几种实现:元素类的生成元素事件回调的生成基于Semantic-UI的语义实现。所有的class类都是由多个属性组成的,所以每个UI组件的属性都可以在组件中声明,class类的生成由父类UiElement负责。AmElementAmElement作为动画组件的父类,主要负责实现以下功能:调用组件的显示/隐藏接口,直接操作组件DOM生成转场的样式。每个动画组件继承AmElement后,将本组件的ref引用传递给父组件,由父组件统一调用,修改子组件DOM元素的style属性,实现3DTransition效果。PropsHelper组件Props的辅助类用于生成组件的类。PropsHelper中有多个静态方法:createStyle:用于生成组件类定义getDefaultProps:获取所有组件的公共props生成类定义时,每个组件只需要提供本组件的props和属性定义即可生成相应的类定义。