echarts组件打包体积分析

打包体积

在图片统计的菜单页面按需引入 14个js(7个无名)

组件中按需引入 图表

js 复制代码
require('echarts/theme/macarons'); // echarts theme
import * as echarts from 'echarts/core';
import { LineChart } from 'echarts/charts';
// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
import {
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent
} from 'echarts/components';
// 标签自动布局、全局过渡动画等特性
import { LabelLayout, UniversalTransition } from 'echarts/features';
// 引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
import { CanvasRenderer } from 'echarts/renderers';
// 注册必须的组件
echarts.use([
  TitleComponent,
  TooltipComponent,
  GridComponent,
  DatasetComponent,
  TransformComponent,
  LineChart,
  LabelLayout,
  UniversalTransition,
  CanvasRenderer
]);

打包体积最大的是images_statistics.js,为349kb

chunk-vendors.js 体积为290kb

images_statistics.j + chunk-vendors.js 的体积和为约640kb

入口main.js中全局引入,会导致chunk-vendors.js打包体积变大 14个js(7个无名)

可以看到,最大的是400kb

images_statistics.js + chunk-vendors.js 的体积和为约640kb

如果在入口文件中全局引入echarts 14个js(7个无名)

可以看到,chunk-vendor.js的体积会高达 619kb

同时,images_statistics.j的体积会减小到 3kb

二者之和为 620多kb

组件懒加载后 18个js(11个无名)

无名的971.js体积最大,为 347kb

chunk-vendor.js的体积会高达 289kb

对比图

对比可以看出,按需引入明显比全局引入要好,全局引入会导致入口js的体积变大,不如分开成两个js, 若在main.js中按需引入,会导致首屏加载变慢,考虑到本项目的图表集中展示在图片统计页面,可以将按需加载的位置放到图片统计页面。 至于是在图片统计页面懒加载引入三个业务图表组件,还是非懒加载引入,二者的体积相差不大,但懒加载的话,js会变多,请求次数会增加, 由于浏览器同一时间针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞。 综合考虑,图表统计页的三个图表组件使用非懒加载组件的方式,echarts图按需引入。 当然,如果使用图表的业务模块很分散,建议还是在入口文件中全局引入即可。

相关推荐
Data analyse45614 分钟前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai25 分钟前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记1 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
赵大仁2 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu2 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!2 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
史瓦辛格2 小时前
给 DeepSeek Harness 写费用插件:把「这次会话花了多少钱」算准
前端·deepseek
星光不问赶路人2 小时前
Vue 3 + TypeScript 中 enum 的使用实践
前端·vue.js
鸥梨菌Honevid2 小时前
UVM 中 REQ 和 RSP 类型详解:从通信模型到 item_done 与 put_response
java·前端·servlet
IT_陈寒2 小时前
Python多进程共享变量这个坑,差点让我加班到凌晨
前端·人工智能·后端