在Vue中使用echarts的两种方式
方式一、直接引入echarts
npm install echarts --save
开发:
main.js
import myCharts from './comm/js/myCharts.js'
Vue.use(myCharts)
myCharts.js
import echarts from 'echarts' const install = function(Vue) { Object.defineProperties(Vue.prototype, { $chart: { get() { return { //画一条简单的线 line1: function (id) { this.chart = echarts.init(document.getElementById(id)); this.chart.clear(); const optionData = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line', smooth: true }] }; this.chart.setOption(optionData); }, } } } }) } export default { install }
HelloWorld.vue
<template> <div class="hello"> <div id="chart1"></div> </div> </template> <script> export default { name: 'HelloWorld', data () { return { } }, mounted() { this.$chart.line1('chart1'); } } </script> <style scoped> #chart1 { width: 300px; height: 300px; } </style>
方式二、使用vue-echarts
先npm安装vue-echarts
npm install echarts vue-echarts
开发:
除了全量引用echarts,我们还可以采用按需引入的方式
main.js
import ECharts from 'vue-echarts' import 'echarts/lib/chart/line' Vue.component('chart', ECharts)
HelloWorld.vue
<template> <div class="hello"> <chart ref="chart1" :options="orgOptions" :auto-resize="true"></chart> </div> </template> <script> export default { name: 'HelloWorld', data () { return { orgOptions: {}, } }, mounted() { this.orgOptions = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line', smooth: true }] } } } </script>
两种方式都能实现大部分需求。
个人认为:
- 如果你的需求是定制化比较少的,基本上绑定数据然后展示就行了,或者你对echarts还不是很熟悉的,那么vue-echarts是一个不错的选择;
- 如果你的需求是定制化多的,比如需要特殊处理鼠标事件什么的(当然vue-echarts也可以,但我不喜欢同时看两份API,多累呀),又或者你已经对echarts比较熟悉了(那你就不会看这篇文章了哈哈),你会发现Echarts官方文档写得真是清晰明了,直接用着也很爽呀完全没问题呀,那么我会更倾向于直接使用echarts。
我刚开始一两个项目的时候用vue-echarts很舒服,上手很快,但后面做得多了,我觉得还是直接写更能满足我,Anyway,看个人选择吧!