1. 程式人生 > >在vue中封裝echarts

在vue中封裝echarts

echarts是什麼

echarts是一個繪製圖表的js庫。它的底層是使用canvas實現的。比如下面的這類圖表,就是使用echarts實現的。
這裡寫圖片描述

echarts在web網頁中的使用

和其他的js庫一樣,echarts在網頁中使用的時候,需要使用script引入它的js庫。

<script src="echarts.min.js"></script>

echarts在繪圖的時候,需要有一個具有寬高的DOM容器。(通常是div)

<div id="main" style="width: 600px;height:400px;">
</div
>

容器配置好之後,需要用js來繪圖了。其核心就是echarts的例項化物件。

var obj = echarts.init(document.getElementById('main'))
//指定配置資料options。
var options = {
    title: {
        text: 'ECharts 入門示例'
    },
    tooltip: {},
    legend: {
        data:['銷量']
    },
    xAxis: {
        data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"
] }, yAxis: {}, series: [{ name: '銷量', type: 'bar', data: [5, 20, 36, 10, 10, 20] }] } // 使用剛指定的配置項和資料顯示圖表。 obj.setOption(options);

這樣就形成了一個echarts的柱狀圖。

echarts如何整合到vue專案中

一般而言,在vue專案中,我們一般使用的是vue-cli的腳手架。如果要使用echarts,我們應該在node環境下下載對應的echarts包。

開啟命令列視窗:

npm
install echarts --save

echarts包的依賴下載好以後。在對應的vue元件中import。示例如下:

import * as echarts from 'echarts';
export default {
  data: function () {
    return {
        options:{
            //可以取上面的options中的資料
        }
    }
  },
  mounted: function(){
    var myChart = echarts.init(document.getElementById('main'));
    myChart.setOption(this.options);
  }
}

這裡需要注意的是,我們要在mounted生命週期函式中例項化echarts物件。因為我們要確保dom元素已經掛載到頁面中。

使用封裝元件的方式進行使用echarts

上面的使用方式,個人覺得很low,因為你每次在使用echarts的時候,都必須要重複的引入。這樣很不方便。

vue作為一個元件化開發的框架,我們可以使用元件的方式進行整合。每次我們引入元件,進行使用,這樣就方便的多。

下面是一個我自己對echarts進行的一個簡單的vue元件的整合。
Echarts.vue檔案中:

<template>
  <div :id="id" :class="className">

  </div>
</template>

<script>
  import * as echarts from 'echarts';
  export default {
    props: ['options','id','className'],
    data: function () {
      return {

      }
    },
    mounted: function(){
      var myChart = echarts.init(document.getElementById('main'));
      myChart.setOption(this.options);
    }
  }
</script>

<style rel="stylesheet/scss" scoped></style>

在使用的時候,我們這樣使用:

//js
import Echarts from '../../../components/Echarts/Echarts.vue';
//html
<Echarts id="main" :options='options' class="echarts"></Echarts>