【vue】优化白屏即首次加载时间,针对vue2+webpack
admin
2024-01-29 00:21:29
0

webpack与vue有关配置

1 打包分析插件-webpack-bundle-analyzer

安装

npm i webpack-bundle-analyzer -D

配置

在对应的webpack配置文件(webpack.prod.conf.js)中添加此插件

if (config.build.bundleAnalyzerReport) {const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPluginwebpackConfig.plugins.push(new BundleAnalyzerPlugin())
}

运行

npm run build

2 cdn引入部分第三方包

根据BundleAnalyzerPlugin插件分析,我们可以选择一些npm包进行cdn引入来减小打包体积从而提升加载速度

webpack配置

在对应的webpack配置文件(webpack.base.conf.js)的module.exports 中的externals添加要忽略的包
例如:

module.exports = {externals: {'BMap': 'BMap','vue': 'Vue','vue-router': 'VueRouter','axios': 'axios','vant': 'vant','mockjs': 'mockjs','vue-awesome-swiper':'VueAwesomeSwiper'},
}
//key值为npm包名,value值为cdn的js文件中export的名称(需要阅读js文件获得**这个一定要注意)
//有时候会报错,是因为cdn引入的包有依赖关系,比如vue-router必须依赖vue,所以要先加载vue才可以

index.html引入CDN

在index.html文件的head中引入有关js文件,不影响进度的js或css文件可以放入body中,不阻塞html展示

 

vue与js文件修改

  1. import有关CDN代码需要注释,例如vueRouter: // import Router from “vue-router”;
  2. 引入代码需要修改,例如vueRouter:const Router=VueRouter

注意:不同包要修改的方式不同,需要研究后再修改,例如vant,vue.use(vant.button)等

3路由懒加载

修改router文件中的引入方式

const  noticeDetail =()=>import("../pages/home/noticeDetail.vue");
export default new Router({mode: "history",// base: "/home/",base: process.env.BASE_URL,routes: [{name: "noticeDetail",component: noticeDetail,path: "/home/noticeDetail"},]
});

webpack配置需要注意的点

optimization的splitChunks配置

一定要注意splitChunks.chunks当前配置了什么,如果需要懒加载不配置splitChunks.chunks即可
此处可将一些较大的共用的包单独分离出来

 optimization: {splitChunks: {// chunks: 'all',// maxInitialRequests:4,cacheGroups: {public: {chunks: 'initial',name: 'vue-public-componentjs',test: /[\\/]src[\\/]_?components(.*)/,enforce: true,priority: 20},vendor: {chunks: 'initial',test: /node_modules/,name: 'vendor', // 使用 vendor 入口作为公共部分// enforce: true,priority: 10},manifest: {name: 'manifest',minChunks: Infinity}}}}

html-webpack-plugin插件

安装(注意版本,本项目中^3.2.0)
npm i html-webpack-plugin

此处有chunks与excludeChunks需要注意,chunks如果配置了,路由懒加载将会失效,所以不宜配置chunks

mini-css-extract-plugin插件

安装
npm i mini-css-extract-plugin

将js中的css文件分离出来

 plugins: [new MiniCssExtractPlugin({filename: utils.assetsPath('css/[name].[contenthash].css'),// allChunks: true,}),]

4 gzip压缩

webpack

compression-webpack-plugin

参考
用于生成gz包

if (config.build.productionGzip) {const CompressionWebpackPlugin = require('compression-webpack-plugin')webpackConfig.plugins.push(new CompressionWebpackPlugin({filename:'[path][base].gz[query]',algorithm: 'gzip',test: new RegExp(/\.(js|css|json|html)(\?.*)?$/i),threshold: 102400,minRatio: 0.8}))
}

服务端(Nginx等)

需要开启gzip

mino CONSOLE

如果使用了mino需要开启压缩,配置详解

5 加载中的提示

inde.html页面

	
加载中...

至此,原本需要7-8秒才可以加载出来的页面,只需要0-1秒就可以加载出来(此次研究断断续续有两周的时间)

tips:诚然,项目代码中也有很多细节需要优化的地方,不同的项目需要进行不同的优化。不在此赘述

相关内容

热门资讯

宁波一游乐园内装饰树起火,工作... 7月6日,多位网友在社交平台发视频称,浙江宁波罗蒙环球乐园一棵圣诞树突然起火。 现场视频显示,一处游...
快乐不放假 公园玩一夏 全市4... 深圳新闻网2025年7月7日讯(深圳商报记者 文灿)7月5日,深圳公园“快乐不放假,公园玩一夏”夏日...
为了帮女儿照顾孩子,我和儿媳妇... 为了帮女儿照顾孩子,我和儿媳妇闹翻了01 “带着你的外孙走。” 一声尖锐的叫喊声过后,传来门被重...
孩子课上听不懂老师讲的怎么办? 孩子课上听不懂老师讲的怎么办?到外面培训机构培训一下,比如新东方教育之类的孩子刚上一年级,课上听不懂...
安徽一爸爸火车上睡着,儿子走丢... 安徽一爸爸火车上睡着,儿子走丢了都不知道,爸爸带娃到底有多靠谱?实在是太不靠谱了,这样的行为实在是太...
大家支持小学生向老师举报、告状... 大家支持小学生向老师举报、告状、告密吗?我个人不支持这样的做法,这样有个弊端,可能把孩子引向一个背后...
麻烦各位推荐几本好看的穿越小说 麻烦各位推荐几本好看的穿越小说绾青丝 独步天下 醉玲珑 丑颜倾城芊泽花,醉玲珑,跨过千年来爱你,暴...
星际战甲怎么一键分解所有重复m... 星际战甲怎么一键分解所有重复mod对着mod,按鼠标中键,即可全选该mod。按重复数量排序,即可方便...
电视剧《五星大饭店》有续集吗?... 电视剧《五星大饭店》有续集吗?是什么结局啊?没有续集。话说没有拍续集的打算。一般现在看的续集都是网友...
高中会考没过就一定没高中毕业证... 高中会考没过就一定没高中毕业证吗?高中会考没过就一定没高中毕业证吗不一定那,没过也可以领的当然不是,...
为什么我的仙剑奇侠传四玩道慕容... 为什么我的仙剑奇侠传四玩道慕容紫英那就卡掉,不能继续啊?我仙四一到紫英那放动画那就卡住,然后关闭了啊...
YES!光之美少女5GOGO有... YES!光之美少女5GOGO有哪些剧场版有YES,光之美少女剧场版1、光之美少女剧场版2、光之美少女...
住家保姆的服务内容有哪些 住家保姆的服务内容有哪些这个要跟保姆自己谈了要看你给的价格了
钓鱼坠子的制作方法有什么? 钓鱼坠子的制作方法有什么?进行海竿抛钩时,由于水底不平或水草、树根过多,挂钩失坠时有发生。因此在垂钓...
问下,图里的那个动漫人物是出自... 问下,图里的那个动漫人物是出自哪个动漫薄樱鬼斋藤一出自动漫《薄樱鬼》人物名为:斋藤一这是原图我觉得像...
死神黑崎一护是不是灭却师?第二... 死神黑崎一护是不是灭却师?第二部什么时候出?一护妈妈是灭却师,爸爸是死神,所以算个混血儿→ →也就是...
点到为止的意思 点到为止的意思点到为止:说话时只是轻轻触及话题的边缘,而不必深入谈论,但是已经让对方明了意图即可到了...
《余生请多指教》热播,顾医生身... 《余生请多指教》热播,顾医生身上有哪些特质?特别温柔,特别专一,会安慰人,会讲大道理,特别暖心。顾医...
浩态狂香昔未逢,红灯烁烁绿盘龙... 浩态狂香昔未逢,红灯烁烁绿盘龙,觉来独对情惊恐,身在仙宫第九重。韩愈的哪一首诗。名字啊什麼?顺便求诗...