Vue中引入Echarts封裝組件的兩種方式(全局引入和按需引入)

平時在項目中實現數據可視化,可以使用百度的開源圖表庫echarts,根據項目需求來繪製生成各種類型的圖表,那麼在Vue中如何引入echarts並封裝成組件調用呢?

目錄:

1. 安裝echarts
2. 全局引入
3. 按需引入
4. 參考文檔

1. 安裝echarts

因爲通過vue-echarts按需引入時,一些組件模塊(如折線圖、柱狀圖,提示框和標題組件等)需要依賴已經包含所有圖表和組件的Echarts包,所以這裏兩個都需要安裝:

npm install echarts vue-echarts -S

當然,你不使用vue-echarts也可以實現按需引入,就可以不安裝vue-echarts,下面會講到。

使用

2. 全局引入

在入口文件main.js中:

import echarts from 'echarts'
Vue.prototype.$echarts = echarts

新建MyChart.vue組件,內容如下,其中option配置可在引用組件時通過props傳入,在這裏爲了演示我直接寫在組件裏了:

<template>
  <div>
    <div :id="chartId" :style="{ width: width, height: height }"></div>
  </div>
</template>

<script>
export default {
  name: "MyChart",
  props: {
    chartId: {
      type: String,
      required: true
    },
    width: {
      type: String,
      default: "500px"
    },
    height: {
      type: String,
      default: "500px"
    },
    chartOptions: {
      type: Object,
      required: true
    },
  },
  mounted() {
    this.createChart()
  },
  methods: {
    createChart() {
      // 基於準備好的dom,初始化echarts實例
      let chart = this.$echarts.init(document.getElementById(this.chartId));
      // 指定圖表的配置項和數據
      var option = {
        title: {
          text: "一週價格走勢"
        },
        tooltip: {},
        legend: {
          data: ["價格"]
        },
        xAxis: {
          type: "category",
          data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
        },
        yAxis: {
          type: "value"
        },
        series: [
          {
            name: "價格",
            data: [220, 202, 231, 243, 225, 220, 213],
            type: "line",
            smooth: true
          }
        ]
      }
      chart.setOption(option);
    }
  }
}
</script>

使用組件:

<my-chart chartId="chart" :chartOptions="{}" width="500px" height="500px"></my-chart>

npm start,即可在瀏覽器中看到根據配置生成折線圖(series.type=‘line’):
我的Vue開發配置環境
在這裏插入圖片描述
使用 import echarts from ‘echarts’ 得到的是已經加載了所有圖表和組件的 ECharts 包,因此項目打包體積會比較大,如果在項目中對體積要求比較苛刻,可以只按需引入需要的模塊。

3. 按需引入

(1)按需引入方式一

此時我們不在main.js文件中引入,而是直接在MyChart.vue組件中,直接引入echarts包中的基礎模版,然後再按需引入需要的組件模塊,修改MyChart.vue組件,內容如下:

<template>
  <div>
    <div :id="chartId" :style="{ width: width, height: height }"></div>
  </div>
</template>

<script>

// 引入基本模板
let Echarts = require("echarts/lib/echarts");
// 按需引入需要的組件模塊
require("echarts/lib/chart/line");
require("echarts/lib/component/title");
require("echarts/lib/component/legend");
require("echarts/lib/component/tooltip");

export default {
  name: "MyChart",
  props: {...},
  mounted() {
    this.createChart();
  },
  methods: {
    createChart() {
      // 基於準備好的dom,初始化echarts實例
      let chart = Echarts.init(document.getElementById(this.chartId));
      // 指定圖表的配置項和數據
      var option = {...};
      chart.setOption(option);
    }
  }
}
</script>
(1)按需引入方式二

此時我們通過引入vue-echarts組件庫,然後再按需引入echarts包中的組件模塊:

vue-echarts是基於echarts封裝實現的一個組件庫,直接按照正常的組件引用方式,安裝引用即可,具體的安裝和引用讀者可以直接閱讀 vue-echarts技術文檔

在入口文件main.js中:

// 引入vue-echarts組件庫
import ECharts from 'vue-echarts'
// 按需引入需要的組件模塊
import 'echarts/lib/chart/line'
import 'echarts/lib/component/title'
import 'echarts/lib/component/legend'
import 'echarts/lib/component/tooltip'
// 註冊組件後即可使用
Vue.component('chart', ECharts)

然後修改MyChart.vue組件,內容如下:

<template>
  <div>
    <chart ref="chart" :options="chartOptions" :auto-resize="true"></chart>
  </div>
</template>

<script>
export default {
  name: "MyChart",
  data() {
    return {
      chartOptions: {}
    };
  },
  mounted() {
    this.getOptions()
  },
  methods: {
    getOptions() {
      this.chartOptions = {
        title: {
          text: "一週價格走勢"
        },
        tooltip: {},
        legend: {
          data: ["價格"]
        },
        xAxis: {
          type: "category",
          data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
        },
        yAxis: {
          type: "value"
        },
        series: [
          {
            name: "價格",
            data: [220, 202, 231, 243, 225, 220, 213],
            type: "line",
            smooth: true
          }
        ]
      }
    }
  }
}
</script>

以上是通過全局註冊組件的方式使用vue-echarts組件,當然你也可以在MyChart.vue組件中import然後註冊成局部組件,但這裏建議使用全局註冊組件方式,因爲這樣不管你在項目中使用多少的不同圖表系列類型,只需關心在.vue組件文件中定義不同的option配置就可以了,而不用在每個組件中寫重複的import引入。

4. 參考文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章