整体类图
此处只列出相比于 G2 3.X 的改变
说明:
- View 增加嵌套支持
- 为交互行为引入状态量管理机制
- 引入 Element 组概念
另外 G2 4.0 会提供组件化方案支持,以支持高定制化、高灵活度的场景,比如 storytelling 以及 g2-plot,详见 G2 组件化方案。目前来看组件化方案同 G2 4.0 的改造并不冲突,在 4.0 改造点的基础上,再将 Geometry 与 View 解耦开即可。
项目组织
使用组件模型来表示各个模块的关系
由此确定 G2 4.0 的项目结构如下:
暂定,最终以 github 上的项目结构为准
|____chart
| |____controller
| | |____scale.ts
| | |____event.ts
| | |____coordinate.ts
| | |____axis.ts
| | |____legend.ts
| | |____annotation.ts
| | |____tooltip.ts
| |____state-manager.ts
| |____view.ts
| |____chart.ts
|____geometry
| |____geometry.ts
| |____element.ts
| |____shape.ts
| |____interval
| | |____shape.ts
| | |____index.ts
| |____line
| | |____shape.ts
| | |____index.ts
| |____index.ts
|____interaction
| |____index.ts
|____theme
| |____index.ts
|____index.ts
数据处理流程
- Legend 由 Chart 统一生成并管理
- 事件交由 View 管理
chart 创建流程
chart 数据更新流程
Element & Shape 设计
—-> 详见链接 <—-
View 类设计
类图中只列出主要的一些方法和属性,更详细的到时候 API 文档补充
💁♀️相比于 3.x,Chart 和 View 的更改:
- View 支持嵌套
- View 拥有自己的 Tooltip,并且直接在交互行为中生成,tooltip 实际是交互行为的反馈
- 一些方法重命名:
- coord() -> coordinate()
- guide() -> annotation()
- view() -> createView()
- source() -> data(),并且不再支持在方法中同时进行列定义,需要在 scale() 中设置
- 各个组件的配置项需要同新组建一起梳理
- 更加详细的生命周期
交互
💁♀️交互机制 + 内置的交互行为
Component 图表组件
💁♀️内容包含:包含 Axis、Tooltip、Annotation、Legend、Slider,同时提供动画、更新接口,以及同 G2 的集成。