现在的人都不习惯看表格数据了,很多数据都用的可视化图表来展现,Echarts是其中最出名的开源库,百度出品,有兴趣可以去官网看看。
https://echarts.apache.org/zh/index.html
利用ajax获取数据,但如果后端还没有准备好接口的时候,我们前端可以通过mock的方式模拟数据。
Mock.js就是生成随机数据,拦截 Ajax 请求,这样方便我们提前开发。
Mock的官网:http://mockjs.com/
翻出一个小案例,利用mock模拟出汽车销售人员的姓名和销售数量,并且用升序的方式用饼状图显示。
点击下方的姓名,可以关闭或打开它对应的饼图。
刷新页面,可以看到姓名和数据是随机产生的。
核心代码:
// mock拦截并模拟数据
Mock.mock('http://www.mock.com', {
"cars|5": [
{
"brand": '@cname',
"sales_data|100-250": 135
}
]
}
)
// 创建ajax对象
var xhr = new XMLHttpRequest();
// 此处的url和mock处一致
xhr.open('get', 'http://www.mock.com');
// onload是新增的事件,请求一次,执行一次,在readyState为4的时候触发
xhr.onload = function () {
// HTTP状态码为200的时候
if (xhr.status == 200) {
var result = JSON.parse(xhr.responseText);
result = result.cars;
// 处理获取的数据
for (let obj of result) {
// echarts需要的键名是value和name
obj.value = obj.sales_data;
obj.name = obj.brand;
delete obj.brand;
delete obj.sales_data;
}
console.log(result);
const chartDom = document.getElementById('main');
const myChart = echarts.init(chartDom, 'dark');
getEcharts(result, myChart);
}
}
xhr.send();
// echarts的配置
function getEcharts(mydata, myChart) {
var option = {
color: ['#ff585d', '#ffb549', '#41b6e6', '#8bc24c', '#7A57D1'],
title: {
text: '汽车月度销售统计',
subtext: '新能源汽车',
left: 'center'
},
tooltip: {
trigger: 'item',
backgroundColor: 'rgba(255,255,255,0.7)',
formatter: '{b}<br />{c}({d}%)'
},
legend: {
orient: 'horizontal',
left: 'center',
bottom: '10%'
},
series: [
{
name: '品牌销量',
type: 'pie',
radius: '50%',
roseType: 'radius',
// 对数据中value的值进行升序排序
data: mydata.sort(function (a, b) { return a.value - b.value }),
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
option && myChart.setOption(option);
}
发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。