千家信息网

vue项目中如何封装echarts

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文小编为大家详细介绍"vue项目中如何封装echarts",内容详细,步骤清晰,细节处理妥当,希望这篇"vue项目中如何封装echarts"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
千家信息网最后更新 2026年11月02日vue项目中如何封装echarts

本文小编为大家详细介绍"vue项目中如何封装echarts",内容详细,步骤清晰,细节处理妥当,希望这篇"vue项目中如何封装echarts"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

场景

  • 1、Echarts使用时,都需要写一堆的option,如果每个图表都要写一个,一个文件里面的代码量是很大的

  • 2、不方便复用

需求

  • 1、方便复用

  • 2、展示类的图表,数据与业务、样式分离,只传数据就行

  • 3、项目里需要用到的图表会有多个,实现少代码自动化导入,不需要一个个import

  • 4、本人图表用在大屏数据可视化的情况比较多,采用的是等比缩放的方式,所以图表也能根据界面缩放自动缩放,不需要手动调用

  • 5、图表可配置

代码总览

涉及的文件如下(具体参考代码):

|-- src    |-- components        |-- chart            |-- index.vue    // 图表单文件组件,供界面调用            |-- index.js    // 实现自动化导入options里的图表option            |-- options    // 存放各种图表的option                |-- bar    // 随便一例子                    |-- index.js    |-- views        |-- chartTest    // 实例所在            |-- index.vue            |-- index.scss            |-- index.js|-- main.js    // 全局引入echarts图表

实现

components--chart--index.vue

这里定义了一个名为ChartView 的组件,开放了4个可配置的属性:宽度width,高度height, 是否自动调整大小autoResize(默认是), 图表的配置chartOption。

这里默认用Canvas 渲染图表了,也可以用SVG的,自选吧

具体代码如下

components--chart--index.js

这里主要利用require.context,把options里面定义的图表遍历导入,这样就不需要在代码里一个个import了,特别是图表多的时候。

const modulesFiles = require.context('./options', true, /index.js$/)let modules = {}modulesFiles.keys().forEach(item => {  modules = Object.assign({}, modules, modulesFiles(item).default)})export default modules

components--chart--options

这里展示下如何封装自己想要的图表

在Echarts官方示例上随便选了个示例

在options下新建一个bar目录,bar目录下新建一个index.js文件。(个人习惯而已,喜欢每个图表都独立文件夹存放。不喜欢这种方式的,可以不放目录,直接js文件,但是components--chart--index.js要对应修改下)

直接复制示例的option代码

index.js具体代码如下

const testBar = (data) => {  const defaultConfig = {    xAxis: {      type: 'category',      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']    },    yAxis: {      type: 'value'    },    series: [{      data: [120, 200, 150, 80, 70, 110, 130],      type: 'bar'    }]  }  const opt = Object.assign({}, defaultConfig)  return opt}export default {  testBar}

testBar方法是可以传参的,具体使用的时候,图表所需要配置的属性,如:data数据、图表颜色......等都可以作为参数传。

main.js

这里全局引入下封装的Echarts组件,方便界面调用。(至于单个引用的方式,就不必多说了)

具体代码如下:

import eChartFn from '@/components/chart/index.js'import ChartPanel from '@/components/chart/index.vue'Vue.component(ChartPanel.name, ChartPanel)Vue.prototype.$eChartFn = eChartFn

chartTest

这里展示下如何调用封装的bar图表,主要代码如下

index.vue

index.js

export default {  name: 'chartTestView',  data() {    return {      chartOpt: {}    }  },  mounted() {},  created() {    this.chartOpt = this.$eChartFn.testBar()  },  methods: {  },  watch: {}}

效果如下

可以尝试拖动浏览器的大小,可以看到,图表也是随着浏览器的拖动自动缩放的。

代码

按代码总览的目录去代码里找着看就行了。

总结

Echarts用到的各种图表,基本上都可以在Echarts官方示例和Echarts可视化作品分享(已停服)上找到。

以上,封装了chart组件,按照上述方式,把图表的option配置和相关处理都放options文件夹下面,调用图表时传对应的option,也就几行代码的事情,算是比较方便了。

chart组件很方便复用的,直接就可以使用了。

补充

评论里说想动态修改option里面的属性,稍微做了个例子,动态修改pie图表的data和color属性,这个是直接生产就可以使用的例子了,直接参考代码就行了,不详细说了。想修改什么属性,直接传参就行。传具体参数可以,想修改的属性多了就把参数封装成一个json传也可以。懂得在封装的option里面灵活使用就行。

以下是新增的参考代码

|-- src    |-- components        |-- chart            |-- options    // 存放各种图表的option                |-- pie    // pie例子                    |-- index.js    |-- views        |-- chartTest    // 实例所在            |-- index.vue            |-- index.scss            |-- index.js

代码使用都是直接一行调用的

this.chartOpt2 = this.$eChartFn.getPieChart([100, 23, 43, 65], ['#36CBCB', '#FAD337', '#F2637B', '#975FE4'])

效果如下:

补充2:图表高亮轮询,dispatchAction使用

效果图

使用方法

加上:play-highlight="true"属性就行

<chart-view class="chart-content" :chart-option="chartOpt2" :auto-resize="true" :play-highlight="true" height="100%" />

主要实现的代码在如下文件的playHighlightAction方法里面,参考的echarts 饼图调用高亮示例 dispatchAction(见文末)实现的。只是简单的高亮轮询,具体各种实现就自己看文档调样式了。

|-- src    |-- components        |-- chart            |-- index.js    // 实现自动化导入options里的图表option

附:echarts 饼图调用高亮示例 dispatchAction

     

读到这里,这篇"vue项目中如何封装echarts"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

图表 代码 封装 文件 组件 属性 示例 高亮 配置 项目 例子 广告 数据 方式 目录 参考 参数 效果 文章 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技的发展 金融科技与互联网金融 科技服务与互联网 互联网科技logo 互联网科技视频素材 佰商互联网科技有限公司 山东吉时兔互联网科技有限公司 安控科技rtu产品工业互联网 农村开互联网科技讲堂 互联网金融中的现代科技 科技互联网大厂 互联网金融科技展 烟台灵鸽互联网科技有限公司 黑云互联网科技有限公司 昆明中奇联合互联网科技 上海万顺科技互联网有限公司招聘 北京军民互联网科技公司 黑龙江互联网科技公司 互联网科技创业有什么好项目 株洲百竞科技的互联网营销顾问 深圳九邦互联网科技有限公司 互联网科技社 郑州华宇互联网科技 互联网科技生活的内容 银川新华互联网科技职业技术培训学校图片 宝灵互联网科技有限公司 中和天地互联网科技有限公司 广东鹅鹅鹅互联网科技有限公司 银川新华互联网科技学校原画 恒生科技互联网指数十大成分股
0