之前规划是全新全新的代码基线,让更多的同学熟悉 G2 底层,但是带来的问题:

  1. 大量细节代码,后续要一一处理回来,新同学做 copy 代码,一样很无聊
  2. 在 copy 迁移代码的同时,做架构的改造,成本比基于原 code base 的难度大很多。

而实际上,来了不少杂事,同学的时间有限,我们还是得把时间花在具体的关键的事情上。所以还是将 5.0 的改造基于 4.0 的代码来开发。

如果按照这个思路,G2 5.0 就是在原有基础上,把累积起来想做的 break change 都做掉。包含:

优化重构点

组件 & 布局 持平

正在基于 gui 重构中。后续 controller + 组件全部更新。

  • 组件重构
  • controller 接入
  • 新组件:timeline
  • 布局:使用约束布局,对组件的规范有一定诉求
  • 存量问题

Geometry 减少 50%

组件层重构

  • options 的规范约束
  • elements 使用 Map 存储,diff 逻辑
  • 更新和渲染统计
  • factory 合并到 geometry
  • 整理视觉通道,规范数据结构

View + Charts 减少 80%

变化不大

  • options 的改造
  • API 扩充
  • 更新和渲染统一

Theme 持平

按照新茗的想法做。

  • 合并 theme、stylesheet
  • 解决存量问题

Interaction 减少 50%

交互的改造,支持扩展多套交互语法。

  • 架构改造
  • 内置交互兼容,替换组件之后,这些内置 action 会有很大的变化
  • interaction、action 配置问题
  • 实现 sdu 交互语法扩展

替换 G 新版本 持平

整体代码量很大,对于 G 的挑战更多。需要有一个相对稳定的 G 版本,才能去做迁移,不然会非常浪费时间。

主要在:

  • geometry、shape
  • component
  • 分散各处的动画
  • 事件

Visual 持平

底层可视化模块的升级。

  • scale
  • coordinate
  • attr
  • adjust

具体

image.png

收获

  • 获得 G 的增益
  • 历史存量布局问题,自定义
  • 扩展能力
    • 组件全新开发,提升扩展性
    • 灵活 API,提高业务自定义能力
    • 自定义交互语法