由于在項目中需要對數(shù)據(jù)進行可視化處理廊镜,也就是用圖表展示,眾所周知echarts是非常強大的插件金蜀。一開始想在網(wǎng)上找一個基于vue封裝好的(懶省事)珠移,eg:vue-echarts ,但是他們的類型有限塘砸,數(shù)據(jù)大多都是定制好的节仿,我很難在此基礎上進行更改(惹不起)。最終還是選擇使用echarts掉蔬。以下是我使用的一些心得體會~
我的示例是在vue-cli搭建
安裝echarts依賴?
```
npm install echarts -S
//或者使用淘寶的鏡像
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install echarts -S
```
創(chuàng)建圖表
首先需要全局引入
在main.js中
在網(wǎng)上找到的許多案例都是以下的引入方式廊宪,但是一直報錯
```
// 引入echarts
import echarts from 'echarts'
Vue.prototype.$echarts = echarts
```
在this.$echarts.init()的前一步打印this.$echarts為undefined,因此判定為引入失敗女轿,后續(xù)不斷的嘗試箭启,以下為有效的引入方式
```
const echarts = require('echarts');
Vue.prototype.$echarts = echarts;
```
在Echarts.vue中
```
<div id="myChart" :style="{width: '300px', height: '300px'}"? ref="chart"></div>
```
注意:?
在Echarts.js中
```
export default{
name:'hello',
data(){
return{
msg:'Welcome to Your Vue.js App'
}
},
mounted(){
this.drawLine();
},
methods:{
drawLine(){
// 基于準備好的dom,初始化echarts實例
let myChart=this.$echarts.init(document.getElementById('myChart'));
/**
**也可以使用 let myChart=this.$echarts.init(this.$refs.chart);
*/
// 繪制圖表
myChart.setOption(
{
title:{text:'在Vue中使用echarts'},
tooltip:{},
xAxis:{data:["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]},
yAxis:{},
series:[{name:'銷量',type:'bar',data:[5,20,36,10,10,20]}]});}}}
```
注意:我們要在mounted生命周期函數(shù)中實例化echarts對象蛉迹。因為我們要確保dom元素已經(jīng)掛載到頁面中
這樣一個簡單的圖表就完成了傅寡。
假如在一個大型的項目中,而且數(shù)據(jù)是非常復雜的情況下北救,考慮使用組件的形式荐操。
按需引入
由于全局引入會將所有的echarts圖表打包,導致體積過大
在Echarts.vue文件中
```
// 引入基本模板
letecharts=require('echarts/lib/echarts')
// 引入柱狀圖組件
require('echarts/lib/chart/bar')
// 引入提示框和title組件
require('echarts/lib/component/tooltip')
require('echarts/lib/component/title')
```
注意:使用 require 而不是 import
以組件的形式用echarts
從上邊可以看出珍策,你每次在使用echarts的時候托启,都必須要重復的引入,這樣很不方便
vue作為一個組件化開發(fā)的框架攘宙,我們可以使用組件的方式進行集成屯耸。每次我們引入組件,進行使用蹭劈,這樣就方便的多疗绣。
下面是一個我自己對echarts進行的一個簡單的vue組件的集成。
在echarts中?
子組件:
注意:要給box2具體的寬高
config中是你要生成的圖表的參數(shù)
父組件: