前言

大部分的后台系统都会有很多的数据,为了看得更直观,一般都会使用图表,如常见的 hightChart,chart,echarts,其中百度的 echarts 我认为是相对来说比较好的,个人一直在再使用,今天主要讲解在 vue 中使用 echarts

1.完整的引入 echarts

1.1 安装 echarts

npm install echarts –save

1.2 在组建中直接 import 使用

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<template>
<div :class="className" :style="{height:height,width:width}"></div>
</template>
<script>
import echarts from 'echarts'
export default {
props: {
className: {
type: String,
default: 'chart',
},
width: {
type: String,
default: '200px'
},
height: {
type: String,
default: '200px'
}
},
data() {
return {
chart: null
}
},
mounted() {
this.initChart()
},
beforeDestroy() {
if (!this.chart) {
return
}
this.chart.dispose()
this.chart = null
},
methods: {
initChart() {
this.chart = echarts.init(this.$el)
this.setOptions({
'***各种options****'
})
}
}
}
</script>

好处:直接引入整体的echarts,不需要单独引入,很简单
坏处:整个包的体积很大,打包的时候可以进行优化

1.3 单独的一个独立组件

大部分情况下,如果多个地方使用同一样的图表,就可以写成一个单独的组件进行多次复用,与上面大部分相同,只是需要传递一个props的原始数组,然后进行setOptions,值得注意的是,一般需要根据父组件的日期选择不同,chart的数据需要进行变化,当前使用的是watch某个props属性,然后进行相应的处理。

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
export default{
props: {
orignChartData: {
type: Array
}
},
mounted() {
if(this.orignChartData.length !== 0){
this.initChart()
}else {
return null
}
},
watch: {
orignChartData: {
deep: true,
hanlder(val){
if(val.length !== 0){
'这里可以算options里面的一些东西'
if(this.chart){
this.chart.clear()
this.settingOptions()
}else{
this.initChart()
}
}else {
if(this.chart){
this.chart.clear()
}
}
}
}
},
methods: {
initChart(){
this.chart = echarts.init(this.$el)
this.settingOptions()
},
settingOptions(){
'这里可以算options里面的一些东西'
this.chart.setOption()
}
}
}

2.按需加载使用echart,减少体积

2.1新建一个‘@/lib/echarts.js’

1
2
3
4
5
import echarts from 'echarts/lib/echarts'
import 'echarts/lib/chart/bar'
import 'echarts/lib/component/legend'
import 'echarts/lib/component/title'
export default echarts

在组件中直接import echarts from ‘@/lib/echarts’

2.2.通过插件babel-plugin-enquire配合实现echarts按需引入

下载babel-plugin-enquire插件

npm install babel-plugin-enquire -D

修改.babelrc文件中的配置

1
2
3
4
"plugins": [
"...其他插件",
"enquire"
]

在‘@/lib/echarts.js’

1
2
3
4
5
6
const echarts = enquire([
'bar',
'legend',
'title'
])
export default echarts

2.3在组件中直接引入

1
import Echart from '@/lib/echarts'