并购重组的程序设计
同事做完了并购重组,进行了一次CodeReview,我把一些感想记录下来,作为今后的参考。
如何无侵入式的扩展组件
通过原型扩展的方式,给组件增加新的能力
可以参考relationChart.ts,对原来的组件进行原型扩展
注意我们自己扩展的方法,都以extend为前缀,便于和组件原始方法区分开。
用到的api,自己做个转发
通过装饰器模式,扩展现有组件的某些方法
将一批api组合为一个方法,方便调用
动画
配置项的设计
可以参考chartData.ts中的动画配置项,以关键帧为设计原则。
思考:如果我们的元素都可以独立操控,那么动画就可以独立出来处理了,类似ZRender。
动画状态status的设计
这个数据结构研究下
如何降低动画开发成本
业务方编写动画的成本太高,因为要理解zrender,还要理解我们制定的潜规则(比如解决冲突问题设计的一些标志位);
1、能不能用TweenMax等等,结合ZRender来做动画?
2、我们搞个动画编辑器工具,动画生成器、元素生成器?
3、将业务动画-行为和元素动画-能力进行分离
这部分产品一直在调整,我们去做,成本也很高,人会绑定在上面了。
业务动画合作方式:
一个同事处理业务数据,加工为组件所需的数据和配置项(动画配置项,琢磨透)
一个同事负责组件开发,提供绘制、动画机制
事件处理
DynamicChart的事件机制不好,应该用注册分发机制,这是业内通用的最佳方案了。
必不可少的API
- zoom
- resize
开放自定义能力
customNode.js自定义渲染,render和update方法
业务数据的计算
type/normal下
解构,points的计算参考下
getAverage算法
渲染的自动更新
通过defineProperty自动监听状态变量的变更,自动触发绘制功能;这个可以加入D3+canvas的教程【注意】