首页 前端知识 vue3 vite项目优化。

vue3 vite项目优化。

2024-02-19 09:02:30 前端知识 前端哥 817 476 我要收藏

     最近开发的一个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

import * as echarts from 'echarts/core';
import {
    MapChart,
    // 系列类型的定义后缀都为 SeriesOption
    MapSeriesOption,
    // LineChart,
    // LineSeriesOption
} from 'echarts/charts';
import {
    TitleComponent,
    // 组件类型的定义后缀都为 ComponentOption
    TitleComponentOption,
    TooltipComponent,
    TooltipComponentOption,
    // GridComponent,
    // GridComponentOption,
    // 数据集组件
    // DatasetComponent,
    // DatasetComponentOption,
    // 内置数据转换器组件 (filter, sort)
    // TransformComponent
} from 'echarts/components';
import { LabelLayout, UniversalTransition } from 'echarts/features';
import { CanvasRenderer } from 'echarts/renderers';

// 通过 ComposeOption 来组合出一个只有必须组件和图表的 Option 类型
export type ECOption = echarts.ComposeOption<
    | MapSeriesOption
    | TitleComponentOption
    | TooltipComponentOption
// | GridComponentOption
// | DatasetComponentOption
>;

// 注册必须的组件
echarts.use([
    TitleComponent,
    TooltipComponent,
    // GridComponent,
    // DatasetComponent,
    // TransformComponent,
    MapChart,
    LabelLayout,
    UniversalTransition,
    CanvasRenderer
]);

// const option: ECOption = {
//     // ...
// };

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配置

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

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

gzip on; 
gzip_static on; 
gzip_buffers 4 16k;
gzip_comp_level 8; 
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; #压缩文件类型       
gzip_vary on;

四:图片资源压缩。

npm i vite-plugin-imagemin -D

vite.config.js中引入

import viteImagemin from 'vite-plugin-imagemin'
 viteImagemin({
        gifsicle: {
          optimizationLevel: 7,
          interlaced: false
        },
        optipng: {
          optimizationLevel: 7
        },
        mozjpeg: {
          quality: 20
        },
        pngquant: {
          quality: [0.8, 0.9],
          speed: 4
        },
        svgo: {
          plugins: [
            {
              name: 'removeViewBox'
            },
            {
              name: 'removeEmptyAttrs',
              active: false
            }
          ]
        }
      }),

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

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

 

转载请注明出处或者链接地址:https://www.qianduange.cn//article/2295.html
标签
评论
发布的文章

jquery初始化方法

2024-03-04 10:03:13

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!