Vue打包echarts无法显示的问题及解决过程

 更新时间:2026年05月15日 14:27:47   作者:Tiger_Paul  
文章主要介绍了使用CDN方式减少Vue项目打包大小并成功显示ECharts图表的方法,包括在public/index.html引入CDN、配置vue.config.js排除ECharts依赖、页面引用、数据渲染等步骤

为减小Vue项目打包大小,采用cdn方式引入echarts。跟着我的步骤做,就不会出现打包后无法显示的情况。

Vue打包echarts无法显示的问题及解决过程

1、采用CDN引入echarts,在项目的public中的index.html中引入CDN

<!-- 引入echarts CDN脚本 -->
<script src="https://cdn.jsdelivr.net/npm/echarts@5.3.1/dist/echarts.min.js"></script>
<!-- 引入lodash CDN脚本,用于数据合并 -->
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>

2、在vue.config.js中的发布模式下,设置打包时排除echarts本地项目依赖的包。

chainWebpack: config => {
    // 发布模式
    config.when(process.env.NODE_ENV === 'production', config => {
      config
        .entry('app')
        .clear()
        .add('./src/main_prod.js')
      config.set('externals', {
        vue: 'Vue',
        'vue-router': 'VueRouter',
        axios: 'axios',
        lodash: '_',
        echarts: 'echarts',
        'vue-quill-editor': 'VueQuillEditor'
      })
      config.plugin('html').tap(args => {
        args[0].isProd = true
        return args
      })
    })
    // 开发模式
    config.when(process.env.NODE_ENV === 'development', config => {
      config.entry('app').clear().add('./src/main_dev.js')
      config.plugin('html').tap(args => {
        args[0].isProd = false
        return args
      })
    })
  }

3、在vue页面中加入引用

import * as echarts from 'echarts'
import _ from 'lodash'

4、查询数据库,并与渲染设置合并,注意echarts渲染要挂载在mounted函数里,因为要等 dom 读取完后才能设置echarts数据。

export default {
  data () {
    return {
      options: {
        title: {
          text: '用户来源'
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross',
            label: {
              backgroundColor: '#72a8fa'
            }
          }
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true
        },
        xAxis: [
          {
            boundaryGap: false
          }
        ],
        yAxis: [
          {
            type: 'value'
          }
        ]
      }
    }
  },
  created () {
  },
  mounted () {
    this.$nextTick(() => {
      this.initChart()
    })
  },
  methods: {
    async initChart(){
      // 基于准备好的dom,初始化echarts实例
      var myChart = echarts.init(document.getElementById('main'))
      // 获取数据
      const { data: res } = await this.$http.get('reports/type/1')
      if (res.meta.status !== 200) {
        this.$message.error('数据获取失败!')
      }
      console.log(res.data)
      // 指定图表的配置项和数据,合并数据
      var option = _.merge(res.data, this.options)
      // 使用刚指定的配置项和数据显示图表。
      myChart.setOption(option)
    }
  }
}
</script>

根据以上步骤,打包后就能实现echarts图表了,并且占用资源很小。

Vue打包echarts无法显示的问题及解决过程_图2

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue3全局组件通信之provide / inject详解

    Vue3全局组件通信之provide / inject详解

    这篇文章主要介绍了Vue3全局组件通信之provide / inject,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Vue3 组件的开发详情

    Vue3 组件的开发详情

    这篇文章主要介绍了Vue3组件的开发,上一篇文章我们价绍了Vue3(三)网站首页布局开发,今天继续上篇内容展开组件的开发,需要的朋友可以参考一下
    2021-11-11
  • Element-UI使用el-row高度设置方式

    Element-UI使用el-row高度设置方式

    这篇文章主要介绍了Element-UI使用el-row高度设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Vue3中解决组件间css层级问题的最佳实践

    Vue3中解决组件间css层级问题的最佳实践

    <Teleport> 是 Vue 3 中引入的一个内置组件,用于将组件的内容渲染到 DOM 中的指定位置,而不受组件层级结构的限制,本文给大家介绍了Vue3使用Teleport解决组件间css层级问题的最佳实践,需要的朋友可以参考下
    2025-02-02
  • VUE Elemen-ui之穿梭框使用方法详解

    VUE Elemen-ui之穿梭框使用方法详解

    这篇文章主要为大家详细介绍了VUE Elemen-ui之穿梭框使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • vue中使用百度脑图kityminder-core二次开发的实现

    vue中使用百度脑图kityminder-core二次开发的实现

    这篇文章主要介绍了vue中使用百度脑图kityminder-core二次开发的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Vue slot插槽的使用详情

    Vue slot插槽的使用详情

    这篇文章主要介绍了Vue slot插槽的使用,在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽,插槽的目的是为了让我们原来的设备具备更多的扩展性比如电脑的USB我们可以插入U盘,手机,鼠标,键盘等等,下面文章就来介绍Vue slot插槽是如何使用的
    2021-10-10
  • vue中使用gantt-elastic实现可拖拽甘特图的示例代码

    vue中使用gantt-elastic实现可拖拽甘特图的示例代码

    这篇文章主要介绍了vue中使用gantt-elastic实现可拖拽甘特图,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 超级详细的Vue安装与配置教程

    超级详细的Vue安装与配置教程

    Vue web前端三大主流框架之一,是一套用于构建用户界面的渐进式框架,下面这篇文章主要给大家介绍了关于Vue安装与配置教程的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • vuex直接赋值的三种方法总结

    vuex直接赋值的三种方法总结

    今天小编就为大家分享一篇vuex直接赋值的三种方法总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09

最新评论