当前位置:   article > 正文

vue3+vite项目优化。_vite引入echart太大

vite引入echart太大

     最近开发的一个vue3+vite+ts项目,build后发现体积过大,所以针对于项目体积进行一次优化。

一: 使用rollup-plugin-visualizer 可视化分析包

npm i rollup-plugin-visualizer -S

vite.config.js中引入

在 plugins里面

 然后执行npm run build就自动打开可视化分析

可以看到,由于项目中使用了echarts和@wangeditor富文本编辑器占据了主要体积。

二:针对于echarts优化有两种方案。

1:echarts按需引入,如果项目中用到的图表类型不多,推荐这种方式,可以有效减少项目体积。

由于我们项目中用到的是MapChart地图,在utils下面新建charts.ts

  1. import * as echarts from 'echarts/core';
  2. import {
  3. MapChart,
  4. // 系列类型的定义后缀都为 SeriesOption
  5. MapSeriesOption,
  6. // LineChart,
  7. // LineSeriesOption
  8. } from 'echarts/charts';
  9. import {
  10. TitleComponent,
  11. // 组件类型的定义后缀都为 ComponentOption
  12. TitleComponentOption,
  13. TooltipComponent,
  14. TooltipComponentOption,
  15. // GridComponent,
  16. // GridComponentOption,
  17. // 数据集组件
  18. // DatasetComponent,
  19. // DatasetComponentOption,
  20. // 内置数据转换器组件 (filter, sort)
  21. // TransformComponent
  22. } from 'echarts/components';
  23. import { LabelLayout, UniversalTransition } from 'echarts/features';
  24. import { CanvasRenderer } from 'echarts/renderers';
  25. // 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型
  26. export type ECOption = echarts.ComposeOption<
  27. | MapSeriesOption
  28. | TitleComponentOption
  29. | TooltipComponentOption
  30. // | GridComponentOption
  31. // | DatasetComponentOption
  32. >;
  33. // 注册必须的组件
  34. echarts.use([
  35. TitleComponent,
  36. TooltipComponent,
  37. // GridComponent,
  38. // DatasetComponent,
  39. // TransformComponent,
  40. MapChart,
  41. LabelLayout,
  42. UniversalTransition,
  43. CanvasRenderer
  44. ]);
  45. // const option: ECOption = {
  46. // // ...
  47. // };
  48. export default echarts

在main.js中引入

并且使用provide,inject为组件注入依赖。 

 

在组件中使用如上

2 : CDN加速

在vite.config.js中引入

import { autoComplete, Plugin as importToCDN } from "vite-plugin-cdn-import";

 经过以上操作后项目体积缩小至

三:开启Gzip压缩

npm i vite-plugin-compression -D

vite.config.js中引入

import compressPlugin from "vite-plugin-compression"; //静态资源压缩

 plugins配置

  1. compressPlugin({ //gzip静态资源压缩
  2. verbose: true, // 默认即可
  3. disable: false, //开启压缩(不禁用),默认即可
  4. deleteOriginFile: false, //删除源文件
  5. threshold: 10240, //压缩前最小文件大小
  6. algorithm: 'gzip', //压缩算法
  7. ext: '.gz', //文件类型
  8. }),

 同样 nginx 上也需要配置, 在nginx中的conf文件中的server{}中配置加上如下代码

  1. gzip on;
  2. gzip_static on;
  3. gzip_buffers 4 16k;
  4. gzip_comp_level 8;
  5. gzip_types application/javascript text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; #压缩文件类型
  6. gzip_vary on;

四:图片资源压缩。

npm i vite-plugin-imagemin -D

vite.config.js中引入

import viteImagemin from 'vite-plugin-imagemin'
  1. viteImagemin({
  2. gifsicle: {
  3. optimizationLevel: 7,
  4. interlaced: false
  5. },
  6. optipng: {
  7. optimizationLevel: 7
  8. },
  9. mozjpeg: {
  10. quality: 20
  11. },
  12. pngquant: {
  13. quality: [0.8, 0.9],
  14. speed: 4
  15. },
  16. svgo: {
  17. plugins: [
  18. {
  19. name: 'removeViewBox'
  20. },
  21. {
  22. name: 'removeEmptyAttrs',
  23. active: false
  24. }
  25. ]
  26. }
  27. }),

不同格式的文件配置也不一样,具体可以参考 github :vite-plugin-imagemin 。

经过以上手段优化后项目体积降低至707KB

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号