# ECharts

管理后台图表也是常见的需求。这里图表就只推荐ECharts,功能齐全,社区demo也丰富gallery (opens new window)。我还是那个观点,大部分插件建议大家还是自己用vue来包装就好了,真的很简单。ECharts支持webpack引入,图省事可以将ECharts整个引入var echarts = require('echarts');不过ECharts还是不小的,我们大部分情况只是用到很少一部分功能,我平时习惯于按需引入的。

// 引入 ECharts 主模块
var echarts = require('echarts/lib/echarts');
// 引入柱状图
require('echarts/lib/chart/bar');
// 引入提示框和标题组件
require('echarts/lib/component/tooltip');
require('echarts/lib/component/title');
1
2
3
4
5
6
7

webpack中使用ECharts文档 (opens new window) ECharts按需引入模块文档 (opens new window) 接下来我们就要在vue中声明初始化ECharts了。因为ECharts初始化必须绑定dom,所以我们只能在vue的mounted生命周期里初始化。

mounted() {
  this.initCharts();
},
methods: {
  this.initCharts() {
    this.chart = echarts.init(this.$el);
    this.setOptions();
  },
  setOptions() {
    this.chart.setOption({
      title: {
        text: 'ECharts 入门示例'
      },
      tooltip: {},
      xAxis: {
        data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
      }]
    })
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

就这样简单,ECharts就配置完成了,这时候你想说我的data是远程获取的,或者说我动态改变ECharts的配置该怎么办呢?我们可以通过watch来触发setOptions方法

//第一种 watch options变化 利用vue的深度 watcher,options一有变化就重新setOption
watch: {
  options: {
    handler(options) {
      this.chart.setOption(this.options)
    },
    deep: true
  },
}
//第二种 只watch 数据的变化 只有数据变化时触发ECharts
watch: {
  seriesData(val) {
    this.setOptions({series:val})
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

其实都差不多,还是要结合自己业务来封装。后面就和平时使用ECharts没有什么区别了。题外话ECharts的可配置项真心多,大家使用的时候可能要花一点时间了解它的api的。知乎有个问题:百度还有什么比较良心的产品?答案:ECharts,可见ECharts的强大与好用。

上次更新: 2020/10/23 下午7:23:27