Vue项目中全局引入和按需引入Echarts

3,340 阅读2分钟

Vue项目中全局引入和按需引入Echarts

前言:当项目中首次引用Echarts时,可参考此文章,并建议用按需引入方式,减少打包文件体积

全局引入

step1:同按需引入,先安装echarts

npm install echats --save

// 如有淘宝镜像,可以选择(速度更快)
cnpm install echarts --save

step2:直接在入口文件main.js中引入echarts

// 引入echarts
import * as echarts from 'echarts'

// 挂载到vue实例中
Vue.prototype.$echarts = echarts

step3:在页面中使用

// 1. 设置放图表的容器
<div class="container">
    <h1>{{ title }}</h1>
    <div class="echart" id="lineEchart" ref="chart"></div>
</div>

// 2. 获取dom节点
let chartDom = document.getElementById('lineEchart')

// 3. 初始化echarts实例
let myChart = this.$echarts.init(chartDom) 

// 4. 写入echarts配置项,详情见官网配置文档
myChart.setOption(this.option) 

按需引入

step1:首先使用npm安装echarts

npm install echats --save

// 如有淘宝镜像,可以选择(速度更快)
cnpm install echarts --save

step2:在vue项目中新建一个js文件,名字随便起,建议使用echarts.js(注意文件位置,不要随便乱放)

// ----------------以下为该文件内容------------------

// 引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口
import * as echarts from "echarts/core";
 
// 引入常用的图表,图表后缀都为 Chart
import { 
  BarChart,
  LineChart,
  ScatterChart,
  PieChart
} from "echarts/charts";
 
// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
import {
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent,
  LegendComponent
} from "echarts/components";
 
// 标签自动布局,全局过渡动画等特性
import { LabelLayout, UniversalTransition } from "echarts/features";
 
// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
import { CanvasRenderer } from "echarts/renderers";
 
// 注册必须的组件
echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent,
  LegendComponent,
  BarChart,
  PieChart,
  LineChart,
  ScatterChart,
  LabelLayout,
  UniversalTransition,
  CanvasRenderer
]);
 
// 导出 echarts
export default echarts;

step3:在入口文件main.js中引入创建好的js文件

// 引入echarts
import echarts from "./echarts/echarts";
 
// 挂载到vue实例中
Vue.prototype.$echarts = echarts

step4:在页面中使用(和全局引入相同)

// 1. 设置放图表的容器
<div class="container">
    <h1>{{ title }}</h1>
    <div class="echart" id="lineEchart" ref="chart"></div>
</div>

// 2. 获取dom节点
let chartDom = document.getElementById('lineEchart')

// 3. 初始化echarts实例
let myChart = this.$echarts.init(chartDom) 

// 4. 写入echarts配置项,详情见官网配置文档
myChart.setOption(this.option) 

两者比较

需要注意的是为了保证打包的体积是最小的,ECharts 按需引入的时候不再提供任何渲染器,所以需要选择引入 CanvasRenderer 或者 SVGRenderer 作为渲染器。这样的好处是假如你只需要使用 svg 渲染模式,打包的结果中就不会再包含无需使用的 CanvasRenderer 模块。

会议白板V1.2迭代中,开发初期使用全局引入的方式,导致打包后前端压缩包较大,首屏下载资源时间过长。为优化此功能,前端维度将Echarts引入方式改为了按需引入,前端dist包压缩后的体积由之前的9.87MB减少为现在的6.25MB,体积减少了36.8%