架构
关键模块(概念)
通用接口: leafer-interface
负责为其他模块定义简单、稳定的核心接口,方便扩展定制功能,及第三方参与插件开发
树结构: leafer-display
负责提供一个简单的树结构 Tree、Branch、Leaf,作为 UI 的基类,可在此基础上定义自己的 UI 框架
同时定义了性能优化的相关字段,方便根据不同场景做性能加速
渲染画板: leafer-canvas
负责封装与平台无关的画板接口,提供给渲染器、加速器使用,可扩展渲染平台,如小程序、Node.js、canvaskit 等
用户交互: leafer-interaction
负责收集原生界面交互事件,并转换为内部交互事件,达到可以操作界面和内部图形的目的,可扩展不同平台,如小程序、Node.js、canvaskit 等
数据处理器: leafer-data
负责采集通过 UI 组件属性输入的数据并进行处理,可通过扩展处理字符串对象、单位转换、相对单位、百分比的换算
布局器: leafer-layouter
负责页面布局、重绘、回流的高性能算法 (纯算法,与平台无关)
同时提供一个观察者: 负责观察树结构中的每一次变化
渲染器: leafer-renderer
负责按需自动渲染应用画面
通过观察者变化通知进行自动重绘
查找器: leafer-finder
负责通过 id、className、tag 等查找图形对象
可定制的模块
渲染画板: leafer-canvas
用户交互: leafer-interaction
数据处理器: leafer-data
布局器: leafer-layouter
渲染器: leafer-renderer
查找器: leafer-finder
可扩展的上层功能
ui 框架
负责提供用户可见的图形组件
加速器
负责针对不同场景进行性能优化
功能插件
满足个性化需求的插件
interface —— display (树结构) —— ui (图形框架) —— 默认h5,支持node、微信小程序 (官方扩展)
| | |
| | ╚—— 可自定义渲染平台 // 如其他平台小程序、canvaskit等
| |
| ╚—— 可自定义UI框架
|
|
|——————— canvas (渲染画板) —— 默认h5,支持node、小程序等 (官方扩展)
| |
| ╚—— 可自定义渲染平台
|
|
|——————— interaction (用户交互) —— 默认h5,支持node、微信小程序 (官方扩展)
| |
| ╚—— 可自定义交互事件
|
|
|——————— data (数据处理器) —— 默认使用绝对单位 (性能好,占内存小)
| |
| ╚—— 可扩展相对单位、百分比单位
|
|
|——————— layouter (布局器) —— 默认绝对单位布局 (性能好)
| | |
| | ╚—— 可替换 // 如自动布局、Flex布局
| |
| |—— renderer (渲染器) —— 可替换 // 支持局部重绘
| |
| ╚—— finder (查找器) —— 可替换 // 通过id、className、tag(类名) 查找图形
|
|
|——————— event
|
|——————— math
|
|——————— task
|
|——————— runtime
|
╚——————— debug
extends ———— booster (加速器) —— design (支持在线设计、白板、无代码平台等场景)
| |
| ╚—— 可扩展其他场景 // 如游戏、页面应用、文档类场景
|
|——————— 官方插件 —— animate (动画)
| |
| ╚—— 通用需求制作插件 // 如创建工具、编辑工具
|
|——————— 第三方插件
|
╚——————— 可与Vue、React结合