Skip to content

设计细节

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的配置中,这种情况适合于 animationbackgroundColor 这种非对象类的配置项
  • 被动策略:如果echarts配置项没有值,即便在主题配置中配置了,也不会合并或覆盖到echarts配置中,这种尤其适合于 xAxisyAxisseries 这种数组类的配置项

合并时,也有两种方式:

  • 覆盖:如果目标不是一个对象,则使用直接覆盖的方式
  • 合并:如果目标是对象,则使用合并方式