vite3+vue3打包优化
阅读数:457 评论数:0
跳转到新版页面分类
html/css/js
正文
一、build视图分析依赖文件
分析项目中的文件大小及引用情用情况,是优化前的重要一步,从而采取文件分包、cdn引入等相关技术。
Rollup Plugin Visualizer是一个依赖分析插件,它提供了多种模式的依赖分析。
1、安装
npm install --save-dev rollup-plugin-visualizer
2、配置
安装完成后,即可在vite下的插件属性中进行配置
import { visualizer } from 'rollup-plugin-visualizer';
export default defineConfig({
plugins: [vue(), visualizer({
emitFile: false,
file: "stats.html", //分析图生成的文件名
open:true //如果存在本地服务端口,将在打包后自动展示
})],
})
然后执行npm run build就可以查看依赖图了。
3、配置参数
filename/file | string | 生成分析的文件名 |
title | string | html标签页标题 |
open | boolean | 以默认服务器代理打开文件 |
template | string | 可选择的图表类型 |
gzipSize | boolean | 搜集gzip压缩包的大小到图表 |
BrotliSize | boolean | 搜集brotli压缩包的大小到图表 |
emitFile | boolean | 使用emitFile生成文件,简单说,这个属性为true,打包后的分析文件会出现在打包好的文件包下,否则就会在项目目录下 |
sourcemap | boolean | 使用sourcemap计算大小 |
projectRoot | string, RegExp | 文件的根目录,默认在打包好的目录下 |
二、第三方CDN引入
cdn管理插件我们使用vite-plugin-cdn-import
1、安装
npm install vite-plugin-cdn-import --save-dev
2、配置
// vite.config.js 基本用法
import reactRefresh from '@vitejs/plugin-react-refresh'
import importToCDN from 'vite-plugin-cdn-import'
export default {
plugins: [
importToCDN({
modules: [
{
name: 'react',
var: 'React',
path: `umd/react.production.min.js`,
},
{
name: 'react-dom',
var: 'ReactDOM',
path: `umd/react-dom.production.min.js`,
},
],
}),
],
}
三、依赖文件分包
在我们没有配置构建工具的分包功能时,构建出来的build将无比巨大且是独立的js和css文件,这样就会存在本地加载文件的压力。主要使用的rollup配置:
1、静态文件按类型分包
build: {
rollupOptions: {
output: {
chunkFileNames: 'static/js/[name]-[hash].js',
entryFileNames: 'static/js/[name]-[hash].js',
assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
}
}
}
2、超大静态资源拆分
build里的output设置内,添加以下代码
manualChunks(id) {
if (id.includes('node_modules')) {
return id.toString().split('node_modules/')[1].split('/')[0].toString();
}
}
// 另一种写法
manualChuncks: {
自定义包名: ['loadash','vue'],
}
四、gzip压缩文件
1、安装vite-plugin-compression
npm i vite-plugin-compression -D
vite-plugin-compression使用gzip或者brotli来压缩资源。
2、配置
import viteCompression from 'vite-plugin-compression';
export default defineConfig({
plugins: [vue(), viteCompression({
verbose: true, //是否在控制台输出压缩结果
disable: false, //是否禁用,相当于开关在这里
threshold: 10240, //体积大于 threshold 才会被压缩,单位 b,1b=8B, 1B=1024KB 那我们这里相当于 9kb多吧,就会压缩
algorithm: 'gzip', //压缩算法,可选 [ 'gzip' , 'brotliCompress' ,'deflate' , 'deflateRaw']
ext: '.gz', //文件后缀
)}
]
)}
3、nginx开启静态资源压缩
gzip_static on;
五、vite build下去除console、debug等无效
vite.config.ts
种build
下必须配置minify
(压缩方式)
build:{
minify: "terser",
terserOptions: {
compress: {
drop_console: true,
drop_debugger: true
}
}
}
而如果使用esbuild
来构建如果去掉console
和debugger
呢.
esbuild:{
drop: command==='build'? ["console","debugger"]:[],
},
相关推荐
一、生命周期
1、vue2生命周期
beforeCreate #实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用
created #实例创建完成后被立即同步调用
beforeMount #
一、使用pnpm新建项目
可以使用npm 或yarn或pnpm来初始化Vite项目
pnpm create vite xxx(项目名称)
#选择vue
#选择js
cd xxx (进入项目目录)
#安
一、概述
<script setup> 是在单文件组件(SFC)中使用组合式API的编译时语法糖,解决Vue3.0中setup需要频繁将声明的变量、函数以及import引入的内容通过return向外
一、概述
在vue2中,data函数里返回的值直接为响应式,但在vue3中我们需要使用一些函数才能达到这个效果。
setup函数中拿不到vue的this。
二、常用函数
<template>
<d
缓存页面主要Jul为了防止重复渲染dom,减少加载时间及性能消耗,提高用户体验。
一、旧版的语法
<keep-alive>
<router-view v-if="$route.meta.kee
一、在main.js挂载
import { createApp } from 'vue'
import App from './App.vue'
import router from './route
一、概述
在vue3中没有$refs这个对象,可以使用如下方法
<template>
<div><input type="text" ref="txt1" value="hello" /></div>
方式一、全局引入
全局引入element之后事,element已经在app.config.globalProperties添加了全局方法$message,所以可以在组件中直接使用。
方式二、按需引入
一、useRouter传参的方式
1、隐匿传参params
import { useRouter } from 'vue-router'
export default {
setup() {