为了补充@Ricardo 的出色答案,我也做了一些非常相似的事情。事实上,如果我说我比这更进一步,我不会错。因此想分享一下方法。
我在 highchart 库上创建了一个包装器。这带来了多重好处,以下是鼓励走这条路的主要优势
-
解耦:将您的代码与 highcharts 解耦
-
轻松升级:此包装器将是唯一需要修改的代码,以防升级后 highchart api 发生任何重大更改,或者即使决定完全迁移到不同的图表库(甚至来自 highchart如果您的应用程序广泛使用图表,to highstock 可能会很详尽)
-
易于使用: 包装器 api 保持非常简单,只有可能变化的东西作为选项公开(其值也不会像 HC 已经拥有的深度 js 对象,主要是 1 级deep),每个都有一个默认值。所以大多数时候我们的图表创建时间很短,构造函数采用 1 个
options 对象,只有 4-5 个属性,其默认值不适合正在创建的图表
-
一致的 UX: 整个应用程序的外观和感觉一致。例如:工具提示格式和位置、颜色、字体系列、颜色、工具栏(导出)按钮等
-
避免重复:当然,作为对所提问题的有效答案,它必须避免重复,而且在很大程度上是这样
这是options 默认值的样子
defaults : {
chartType : "line",
startTime : 0,
interval : 1000,
chartData : [],
title : "Product Name",
navigator : true,
legends : true,
presetTimeRanges : [],
primaryToolbarButtons : true,
secondaryToolbarButtons : true,
zoomX : true,
zoomY : false,
height : null,
width : null,
panning : false,
reflow : false,
yDecimals : 2,
container : "container",
allowFullScreen : true,
credits : false,
showAll : false,
fontSize : "normal", // other option available is "small"
showBtnsInNewTab : false,
xAxisTitle : null,
yAxisTitle : null,
onLoad : null,
pointMarkers : false,
categories : []
}
如您所见,大多数情况下,只是chartData 发生了变化。即使您需要设置一些属性,它主要只是真/假类型,与 highchart 构造函数所期望的恐怖完全不同(不是批评它们,它们提供的选项数量从定制的角度来看是惊人的,但对于每个开发人员来说团队理解和掌握它可能需要一些时间)
所以图表的创建就这么简单
var chart=new myLib.Chart({
chartData : [[1000000,1],[2000000,2],[3000000,1],[4000000,5]]
});