首页 前端知识 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

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