Why do we need this library?
目前监控的图形元素均使用 leaflet 原生图形库,无业务性封装。
而地图编辑器有所封装,但是所采取的 rewrite prototype 的 mixin 机制带来 2 个问题:
- 潜在的命名冲突风险
- TS 类型声明混乱
另外设计方面,编辑器存在的缺陷在于:
- 没有独立的业务模型
- 行为模式设计不合理
- 缺乏基于栈的图形状态管理
而对于监控来说,业务模型与视图的响应机制纯粹基于事件,导致代码逻辑不够清晰(到处是绑定 on
和解绑 off
)。
当然也有可取的地方,监控的可取之处是:
- 有独立的业务模型
编辑器的可取之处是:
- 基于 React 组件的 SVGOverlay
- 基于状态的视图更新机制
因此,仓库图形库想要解决这些问题并采纳其中可取的地方。并且,它要封装公司的业务,以使可开箱即用,同时争取将两个端的图形部分的代码统一。