我目前正在制作一个服务器仪表板,其中使用了许多图表和图形。
我在后端使用Django,并使用Highcharts/Highstock (http://www.highcharts.com/) 来生成图表(尽管我们也在关注D3,具体取决于其进展情况)。
我的问题是,有没有好的方法来生成所有的图表,并仍然保持DRY(Don't Repeat Yourself)?
(我知道有Django-Chartit,但它对我们的目的有些局限性,不能提供我们需要的某些自定义功能。) 1. 如何检索数据 首先,我应该将用于图表的数据编码在JavaScript本身中吗?例如:
我在后端使用Django,并使用Highcharts/Highstock (http://www.highcharts.com/) 来生成图表(尽管我们也在关注D3,具体取决于其进展情况)。
我的问题是,有没有好的方法来生成所有的图表,并仍然保持DRY(Don't Repeat Yourself)?
(我知道有Django-Chartit,但它对我们的目的有些局限性,不能提供我们需要的某些自定义功能。) 1. 如何检索数据 首先,我应该将用于图表的数据编码在JavaScript本身中吗?例如:
series: [{
name: 'Virtualised',
data: [80, 81, 84, 84, 85, 80, 90, 85, 80, 88, 89, 90]
}, {
name: 'Physical',
data: [15, 14, 12, 8, 10, 12, 12, 14, 10, 12, 8, 9]
}]
我应该通过AJAX调用来检索所有数据吗?例如,使用Query.get()
返回JSON数据?
2. 动态生成JavaScript
如果我们选择选项1并将数据直接编码到JavaScript中,那么我如何动态生成这些JavaScript文件?
目前,我们的JS是由Web服务器(NGinx)直接提供的。或者我应该在HTML文件中使用内联<script>
标签?
3. AJAX的安全性/性能
如果我们选择选项2,即JSON / AJAX路线-在一个页面上进行20个JQuery.get()
调用是否会有性能问题?我不知道是否有方法可以将它们全部批处理?
那么安全性呢?我们希望只向图表公开AJAX端点,但您如何允许这样做而不让任何人直接调用该URL?
4. DRY(Don't Repeat Yourself)
无论哪种方式,我都注意到我们有大量重复的所有这些图表。
有什么最好的方法来减少这一点?针对图表的模板标签?还是有更聪明的方法?
谢谢, 维克多