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

开发 架构
Semantic-UI是一套完全语义化设计的前端框架,使用起来灵活又方便,可以满足多变复杂的页面实现需求。从官方文档(版本2.2)来看,主要有四类框架元素:元素、组合、视图、模块。

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)来看,主要有四类框架元素:

  1. 元素
  2. 组合
  3. 视图
  4. 模块

具体示例可参考官网。

基本分析

Semantic-UI实现于语义化设计,各个类可以自由组合使用已实现页面需求。每个组件的属性定义大多类似,如Button和Icon,都有size或者color等常用属性,而这些属性可用公共辅助类来定义和声明。

从实现上来讲,元素、组合和视图的大部分实现,都可以用纯CSS声明来达到效果,但模块类的组件往往需要js的辅助以实现动态效果。考虑到这一点,组件实现大致分为两类实现:UI类和动效类。需要实现3DTransition的组件都继承于动效类,剩余只需CSS声明的组件继承于UI类。当然动效类也同样继承于UI类。

UiElement

UiElement作为所有基础UI组件的基类,主要负责以下几类实现:

  1. 元素class的生成
  2. 元素事件回调的生成

基于Semantic-UI的语义化实现,所有class类均由多个属性拼装组成,所以每个UI组件的属性在组件内声明即可,class类的生成由父类UiElement负责。

AmElement

AmElement作为动效组件的父类,主要负责以下功能实现:

  1. 组件的show/hide接口调用
  2. 直接操作组件DOM,生成transition的style

每个动效组件继承AmElement后,均将本组件的ref引用传递给父组件,由父组件统一调用并修改子组件的DOM元素style属性,以实现3DTransition效果。

PropsHelper

组件Props的辅助类,用以生成组件的class。PropsHelper中有多个静态方法:

  1. createStyle:用以生成组件class定义
  2. getDefaultProps:取得所有组件的通用props

每个组件在生成class定义是,只需提供本组件的props以及属性定义,即可生成对应的class定义。

责任编辑:庞桂玉 来源: segmentfault
相关推荐

2016-10-18 21:39:59

Semantic-UIReact基本元素组件

2016-10-18 21:31:52

Semantic-UIReact构造模块

2016-10-18 21:45:53

Semantic-UIReactJavascript

2020-10-28 09:12:48

React架构Hooks

2023-03-21 08:31:13

ReconcilerFiber架构

2022-12-15 17:31:41

架构龙芯

2022-05-11 07:50:15

React UI组件库前端

2023-03-28 07:59:57

ReactReconciler

2015-07-31 09:28:53

React场景探索

2023-04-20 10:15:57

React组件Render

2023-06-09 07:21:23

React前端框架

2021-06-21 15:49:39

React动效组件

2024-03-11 07:46:40

React优先级队列二叉堆

2009-05-06 08:42:03

SymbianS60移动OS

2014-09-25 11:25:19

游戏引擎架构设计

2019-01-18 08:28:21

服务器程序架构

2020-10-13 08:36:30

React 架构机制

2020-09-30 09:15:24

React架构递归

2014-10-14 15:50:19

UIAndroid

2020-09-24 08:45:10

React架构源码
点赞
收藏

51CTO技术栈公众号