在vue-cli项目中使用echarts

本文详细介绍如何在Vue项目中引入并使用ECharts图表库,包括安装依赖、全局及按需引入方式,以及如何初始化图表并展示数据。

这个示例使用 vue-cli 脚手架搭建

安装echarts依赖

npm install echarts -S

或者使用国内的淘宝镜像:

cnpm安装

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install echarts -S

 


 

创建图表

全局引入

main.js

// 引入echarts
import echarts from 'echarts'

Vue.prototype.$echarts = echarts 

 

Hello.vue

<div id="myChart" :style="{width: '300px', height: '300px'}"></div>

 

export default {
  name: 'hello',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  mounted(){
    this.drawLine();
  },
  methods: {
    drawLine(){
        // 基于准备好的dom,初始化echarts实例
        let myChart = this.$echarts.init(document.getElementById('myChart'))
        // 绘制图表
        myChart.setOption({
            title: { text: '在Vue中使用echarts' },
            tooltip: {},
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        });
    }
  }
}

注意: 这里echarts初始化应在钩子函数mounted()中,这个钩子函数是在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用

按需引入

上面全局引入会将所有的echarts图表打包,导致体积过大,所以我觉得最好还是按需引入。

Hello.vue

// 引入基本模板
let echarts = require('echarts/lib/echarts')
// 引入柱状图组件
require('echarts/lib/chart/bar')
// 引入提示框和title组件
require('echarts/lib/component/tooltip')
require('echarts/lib/component/title')
export default {
  name: 'hello',
  data() {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  mounted() {
    this.drawLine();
  },
  methods: {
    drawLine() {
      // 基于准备好的dom,初始化echarts实例
      let myChart = echarts.init(document.getElementById('myChart'))
      // 绘制图表
      myChart.setOption({
        title: { text: 'ECharts 入门示例' },
        tooltip: {},
        xAxis: {
          data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
        },
        yAxis: {},
        series: [{
          name: '销量',
          type: 'bar',
          data: [5, 20, 36, 10, 10, 20]
        }]
      });
    }
  }
}
 

这里之所以使用 require 而不是 import,是因为 require 可以直接从 node_modules 中查找,而 import 必须把路径写全。

  • 页面展示

  •  

字符云示例:

cnpm install echarts -S

在需要使用的页面引入

 require('echarts-wordcloud');

页面展示:

Vue CLI 5 中对 ECharts 进行分包优化,可以有效减小主 bundle 的体积,提升应用的加载性能。以下是具体的配置方法: ### 按需引入 ECharts 模块 为了避免将整个 ECharts 库打包进主 bundle,可以在 `main.js` 或其他入口文件中手动引入所需的模块和图表类型。例如: ```javascript import Vue from &#39;vue&#39; import App from &#39;./App.vue&#39; // 引入 ECharts 核心组件 import ECharts from &#39;vue-echarts/components/ECharts.vue&#39; // 按需引入所需图表类型和组件 import &#39;echarts/lib/chart/bar&#39; import &#39;echarts/lib/chart/line&#39; import &#39;echarts/lib/component/tooltip&#39; import &#39;echarts/lib/component/legend&#39; import &#39;echarts/lib/component/title&#39; // 注册组件 Vue.component(&#39;charts&#39;, ECharts) new Vue({ render: h => h(App) }).$mount(&#39;#app&#39;) ``` 这种方式确保只有实际使用的模块被包含在最终的打包结果中,从而显著减少输出文件大小[^1]。 --- ### 使用 Webpack 的 Code Splitting 功能 Vue CLI 默认支持基于动态导入(`import()`)的代码分割机制。对于 ECharts 组件,可以通过懒加载方式进一步优化加载策略。例如,在组件中使用异步加载的方式引入 ECharts: ```javascript export default { components: { Charts: () => import(/* webpackChunkName: "echarts" */ &#39;vue-echarts/components/ECharts.vue&#39;) } } ``` 通过该方式,ECharts 相关代码会被单独打包为一个 chunk 文件,并在需要时按需加载,从而避免阻塞初始页面渲染过程[^2]。 --- ### 配置 `splitChunks` 提取公共模块 为了更精细地控制分包行为,可以在 `vue.config.js` 中修改 Webpack 的 `splitChunks` 配置: ```javascript module.exports = { chainWebpack: config => { config.optimization.splitChunks({ chunks: &#39;all&#39;, minSize: 30000, maxSize: 0, minChunks: 1, maxAsyncRequests: 5, maxInitialRequests: 3, automaticNameDelimiter: &#39;~&#39;, cacheGroups: { echarts: { test: /[\\/]node_modules[\\/](echarts|vue-echarts)[\\/]/, priority: -10, filename: &#39;echarts-vendor.js&#39; }, vendors: { test: /[\\/]node_modules[\\/]/, priority: -20, filename: &#39;vendors.js&#39; } } }) } } ``` 上述配置将所有与 `echarts` 和 `vue-echarts` 相关的依赖提取到单独的 `echarts-vendor.js` 文件中,实现对 ECharts 的独立打包和缓存利用[^1]。 --- ### 使用 `webpack-bundle-analyzer` 分析打包体积 为了进一步优化打包策略,可以借助内置的 `webpack-bundle-analyzer` 插件查看构建产物的组成情况。运行以下命令即可生成可视化报告: ```bash vue-cli-service build --mode production --report ``` 该报告有助于识别大体积模块,从而指导后续的分包决策[^2]。 --- ### 示例:结合多页应用结构进行分包 如果你正在开发一个多页应用(MPA),还可以通过 `pages` 配置为每个页面指定独立的入口文件,从而实现更细粒度的分包控制: ```javascript module.exports = { pages: { index: { entry: &#39;src/main-index.js&#39;, template: &#39;public/index.html&#39;, filename: &#39;index.html&#39; }, dashboard: { entry: &#39;src/main-dashboard.js&#39;, template: &#39;public/dashboard.html&#39;, filename: &#39;dashboard.html&#39; } } } ``` 这种结构允许不同页面使用不同的 ECharts 子集,避免不必要的重复打包[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值