设计细节
number
format 格式化
值的几个极端情况考虑:
- null或undefined
- 数值字符串
- 其他对象
- NaN、Infinity、-Infinity
formatChinese 格式化中文
- 10到底读“十”,还是“一十”?
- 负值怎么读?-20读“负二十”?
- 小数位读不读?四舍五入取整还是读小数位(如123.4读“一百二十三点四”)
- 增加繁体输出的选项
array
remove
重点:
- 倒序删除,顺序删除会有问题
- 索引列表要去重,防止多删
- 索引列表要排序,否则倒序删除会有问题
dom
createWatermark
水印参数:
- 字体
- 文字颜色
- 文字大小
- 文字加粗
- 文字斜体
- 旋转角度
- 间距
绘制思路:
- 在canvas画布上绘制出水印内容(间距由留白控制)
- 导出图片的base64字符串
- 在页面创建一个占满全屏的元素,将导出的图片内容作为背景图,设置重复模式
- 在canvas上创建重复模式,将绘制了水印的canvas重复绘制在新canvas上
tree
parseFromCollection 集合转树
- 性能问题:使用哈希表和对象关联代替递归
- 坑:使用普通对象作为哈希表的原型继承问题
- 游离节点的处理:警告?报错?返回?
path
createQuerystring
- undefined跳过
- 空值(null/NaN等)处理为空字符串
- 支持URL编码
parseQuerystring
parseFilename
- 同时解析basename与extname
echarts
withTheme
对echarts option处理方案:
- 主动策略:无论echarts配置项是否有值,只要主题配置中配置了,就直接合并或覆盖到echarts的配置中,这种情况适合于
animation
、backgroundColor
这种非对象类的配置项 - 被动策略:如果echarts配置项没有值,即便在主题配置中配置了,也不会合并或覆盖到echarts配置中,这种尤其适合于
xAxis
、yAxis
、series
这种数组类的配置项
合并时,也有两种方式:
- 覆盖:如果目标不是一个对象,则使用直接覆盖的方式
- 合并:如果目标是对象,则使用合并方式