当前位置: 首页 > news >正文

echarts按需加载和不按需加载,打包后的具体对比

用rollup-plugin-visualizer插件的图对比

按需加载前按需加载后
1070.99 kb662.32kb
2.1MB1.16MB

按需加载前
在这里插入图片描述
按需加载后
在这里插入图片描述
插件指标
按需加载前
在这里插入图片描述
按需加载后
在这里插入图片描述


对比的插件rollup-plugin-visualizer使用

npm install --save-dev rollup-plugin-visualizer

vite.config.js配置

import { defineConfig } from 'vite';
import { visualizer } from 'rollup-plugin-visualizer';
import vue from '@vitejs/plugin-vue';export default defineConfig({plugins: [// 其他插件...vue(),visualizer({open: true, // 打包后自动打开报告gzipSize: true, // 显示 gzip 压缩后的大小brotliSize: true, // 显示 brotli 压缩后的大小}),],
});

echarts没有按需加载代码
直接引入
import * as echarts from ‘echarts’;
app.vue

<template><div><div ref="barChart" style="width: 600px;height:400px;"></div><div ref="lineChart" style="width: 600px;height:400px;"></div><div ref="ringChart" style="width: 600px;height:400px;"></div></div>
</template><script>import * as echarts from 'echarts';export default {mounted() {this.initBarChart();this.initLineChart();this.initRingChart();},methods: {initBarChart() {const barChart = echarts.init(this.$refs.barChart);barChart.setOption({title: { text: '柱状图示例' },tooltip: {},xAxis: {data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]});},initLineChart() {const lineChart = echarts.init(this.$refs.lineChart);lineChart.setOption({title: { text: '折线图示例' },tooltip: {},xAxis: {type: 'category',boundaryGap: false,data: ['周一','周二','周三','周四','周五','周六','周日']},yAxis: {type: 'value'},series: [{data: [820, 932, 901, 934, 1290, 1330, 1320],type: 'line',areaStyle: {}}]});},initRingChart() {const ringChart = echarts.init(this.$refs.ringChart);ringChart.setOption({title: { text: '环形图示例', left: 'center' },tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left'},series: [{name: '访问来源',type: 'pie',radius: ['40%', '70%'], // 这里设置了内外半径,形成环形图avoidLabelOverlap: false,label: {show: false,position: 'center'},emphasis: {label: {show: true,fontSize: '40',fontWeight: 'bold'}},labelLine: {show: false},data: [{ value: 1048, name: '搜索引擎' },{ value: 735, name: '直接访问' },{ value: 580, name: '邮件营销' },{ value: 484, name: '联盟广告' },{ value: 300, name: '视频广告' }]}]});}}
}
</script><style scoped>
/* 样式可以根据需要调整 */
</style>

按需加载:
(1)把需要的图处理到js文件里

// src/echartsSetup.jsimport * as echarts from 'echarts/core';
import {BarChart,LineChart,PieChart // 环图是通过饼图设置特定配置项实现的
} from 'echarts/charts';
import {GridComponent,TooltipComponent,LegendComponent,DatasetComponent,TitleComponent,ToolboxComponent,DataZoomComponent,TransformComponent,GraphicComponent
} from 'echarts/components';
import { CanvasRenderer } from 'echarts/renderers';// 注册你需要的组件和渲染器
echarts.use([BarChart,LineChart,PieChart, // 环图需要PieChart支持GridComponent,TooltipComponent,LegendComponent,DatasetComponent,TitleComponent,ToolboxComponent,DataZoomComponent,TransformComponent,GraphicComponent,CanvasRenderer
]);export default echarts;

(2)从js文件引入

<template><div><div ref="barChart" style="width: 600px;height:400px;"></div><div ref="lineChart" style="width: 600px;height:400px;"></div><div ref="ringChart" style="width: 600px;height:400px;"></div></div>
</template><script>
import echarts from './echartsSetup'; // 引入自定义的 echarts 配置export default {mounted() {this.initBarChart();this.initLineChart();this.initRingChart();},methods: {initBarChart() {const barChart = echarts.init(this.$refs.barChart);barChart.setOption({title: { text: '柱状图示例' },tooltip: {},xAxis: {data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]});},initLineChart() {const lineChart = echarts.init(this.$refs.lineChart);lineChart.setOption({title: { text: '折线图示例' },tooltip: {},xAxis: {type: 'category',boundaryGap: false,data: ['周一','周二','周三','周四','周五','周六','周日']},yAxis: {type: 'value'},series: [{data: [820, 932, 901, 934, 1290, 1330, 1320],type: 'line',areaStyle: {}}]});},initRingChart() {const ringChart = echarts.init(this.$refs.ringChart);ringChart.setOption({title: { text: '环形图示例', left: 'center' },tooltip: {trigger: 'item'},legend: {orient: 'vertical',left: 'left'},series: [{name: '访问来源',type: 'pie',radius: ['40%', '70%'], // 这里设置了内外半径,形成环形图avoidLabelOverlap: false,label: {show: false,position: 'center'},emphasis: {label: {show: true,fontSize: '40',fontWeight: 'bold'}},labelLine: {show: false},data: [{ value: 1048, name: '搜索引擎' },{ value: 735, name: '直接访问' },{ value: 580, name: '邮件营销' },{ value: 484, name: '联盟广告' },{ value: 300, name: '视频广告' }]}]});}}
}
</script><style scoped>
/* 样式可以根据需要调整 */
</style>

相关文章:

  • 网站开发过程中样式忽然不显示问题
  • 《构建社交应用的安全结界:双框架对接审核API的底层逻辑与实践》
  • 《微机原理与接口技术》第 6 章 半导体存储器
  • 《从像素到身份:Flutter如何打通社交应用人脸识别的技术闭环》
  • 从生产流程到故障处理,R²AIN SUITE 如何为制造业“减负”?
  • 树莓5安装 PyCharm 进行python脚本开发
  • Java 线程Thread类中的方法
  • JavaScript 中如何跳出(或终止)forEach 循环
  • zabbix最新版本7.2超级详细安装部署(一)
  • Helix QAC 2025.1 重磅发布!MISRA C:2025® 100%覆盖
  • 【C++】【设计模式】生产者-消费者模型
  • 数据库--处理模型(Processing Model)
  • 有限资源下的AI搜索策略:2025年SEO优化指南
  • 在scala中使用sparkSQL读入csv文件
  • 前端面试每日三题 - Day 33
  • Vue 2 和 Vue 3的比较(二、语法差异)
  • 新一代动态可重构处理器技术,用于加速嵌入式 AI 应用
  • 索尼(sony)摄像机格式化后mp4的恢复方法
  • CAElinux系统详解
  • Retrofit vs Feign: 介绍、对比及示例
  • 世界高血压日|专家:高血压患者控制血压同时应注重心率管理
  • 女排奥运冠军宋妮娜:青少年保持身心健康才能走得更远
  • 用贝多芬八首钢琴三重奏纪念风雨并肩20年
  • 刘小涛任江苏省委副书记
  • 体坛联播|巴萨提前2轮西甲夺冠,郑钦文不敌高芙止步4强
  • 一个多月来上海交大接连“牵手”三区,在这些方面进行区校合作