VUE 首屏加载时间优化
在Vue项目中,引入到工程中的所有js、css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏。若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首屏的体验。
解决方法是,将引用的外部js、css文件剥离开来,不编译到vendor.js中,而是用资源的形式引用,这样浏览器可以使用多个线程异步将vendor.js、外部的js等加载下来,达到加速首开的目的。
外部的库文件,可以使用CDN资源,或者别的服务器资源等。
下面来介绍几种方式:
1.大文件定位
我们可以使用webpack可视化插件Webpack Bundle Analyzer 查看工程js文件大小,然后有目的的解决过大的js文件。
安装
npm install --save-dev webpack-bundle-analyzer
在webpack中设置如下,然后npm run dev的时候会默认在浏览器上打开
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {plugins: [new BundleAnalyzerPlugin()]
}
2.JS文件按需加载
如果没有这个设置,项目首屏加载时会加载整个网站所有的JS文件,所以将JS文件拆开,点击某个页面时再加载该页面的JS是一个很好的优化方法。
这里用到的就是vue的组件懒加载。在router.js中,不要使用import的方法引入组件,使用require.ensure。
import index from '@/components/index'
const index = r => require.ensure([],() => r(require('@/components/index'),'index'))
// 如果写了第二个参数,就打包到该`JS/index`的文件中
// 如果不写第二个参数,就直接打包在`JS`目录下。
const index = r => require.ensure([],() => r(require('@/components/index')))
3.将JS文件放在body的最后
默认情况下,build后的index.html中,js的引入实在是在head中,使用html-webpack-plugin插件,将inject的值改为body。就可以将js引入放到body最后。
var HtmlWebpackPlugin = require('html-webpack-plugin');new HtmlWebpackPlugin({inject:'body'})
4.使用cdn
打包时,把vue、vuex、vue-router、axios等,换用国内的bootcdn直接引入到根目录的index.html。
在webpack设置中添加externals,忽略不需要打包的库。
module.exports = {context: path.resolve(__dirname, '../'),entry: {app: './src/main.js'},externals:{'vue':'Vue','vue-router':'VueRouter','vuex':'Vuex'},// 格式为'aaa':'bbb',其中,aaa表示要引入的资源的名字,bbb表示该模块提供给外部引用的名字,由对应的库自定。例如,vue为Vue,vue-router为VueRouter
在index.html中使用cdn引入
<script src="//cdn.bootcss.com/vue/2.2.5/vue.min.js"></script>
<script src="//cdn.bootcss.com/vue-router/2.3.0/vue-router.min.js"></script>
<script src="//cdn.bootcss.com/vuex/2.2.1/vuex.min.js"></script>
<script src="//cdn.bootcss.com/axios/0.15.3/axios.min.js"></script>
去掉原有的引用,否则还是会打包
//去掉import,如:
//import Vue from 'vue'//import Router from 'vue-router'
//去掉Vue.use(XXX),如:
//Vue.use(Router)
5.压缩代码,移除console
使用UglifyJsPlugin插件来压缩代码和移除console
new UglifyJsPlugin({uglifyOptions: {compress: {warnings: false,drop_console:true,pure_funcs:['console.log']}},sourceMap: config.build.productionSourceMap,parallel: true}),
VUE 首屏加载时间优化相关推荐
- Vue首屏加载速度优化,提升80%以上
在Vue项目中,引入到工程中的所有js.css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏.若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首屏 ...
- Vue首屏加载速度优化,我用这几个技巧提升80%以上
作者:谁动了我的橘子 原文链接:https://juejin.im/post/5edf5b22e51d4578975a7024 在Vue项目中,引入到工程中的所有js.css文件,编译时都会被打包进v ...
- vue项目优化 - 网站首屏加载时间
文章目录 1. 首先打包后看看加载时间 2. vendor 2.1. 路由懒加载 2.2. (@vue/cli < 3.0.0) map.gzip.console.log 2.3. (@vue/ ...
- Vue首屏加载白屏问题及解决方案
Vue首屏加载白屏问题及解决方案 首先说一下首页加载为什么会白屏? 先说下 SPA 单页面的加载过程 首先就是 html ,也就是 FP 阶段 FP(全称"First Paint" ...
- 接手同事vue项目两个月的血和泪,关于vue项目性能优化,缩短首屏加载时间
最近接手了别人做的vue项目,项目跑起来后,有些页面很卡,首屏加载也慢,打包速度也慢.于是,研究了很久vue的项目性能优化,下面我将从两个部分来详解vue项目的性能优化: 代码优化 webpack打包 ...
- vue首屏加载速度慢_Vue首屏加载速度优化如何提升80%?本文详解
在Vue项目中,引入到工程中的所有js.css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏.若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首屏 ...
- vue 关闭 窗口后清除所有数据_Vue首屏加载速度优化,我用这几个技巧提升80%以上...
前端潮咖 点击上面蓝字,关注我们! 关注 关注前端潮咖,每日精选好文 作者:谁动了我的橘子 来源:https://juejin.im/post/5edf5b22e51d4578975a7024 在Vu ...
- 浅谈Vue单页应用首屏加载速度优化方案
心语:最不会利用时间的人,最会抱怨时间不够 趁着五一放假,刚好最近天气也是不好,.所以抽出一点时间写一点东西,也算是不辜负这个美好的假期吧!小编也祝愿大家五一快乐,玩得愉快哈 随着各大前端框架的诞生以 ...
- Vue 首屏加载优化(dist 打包文件从 5M+ 缩减到 324kb)
最近在做 Vue 项目的首屏优化,效果不错,在这里将经验分享给大家,总的优化措施是以下四点. 优化方式1:将项目中用到的图片移动到百度云文件存储 优化方式2:使用路由懒加载 优化方式3:关闭 sour ...
最新文章
- 一次bug死磕经历之Hbase堆内存小导致regionserver频繁挂掉
- 差异备份、增量备份、完全备份的区别
- java运算符 —(5)
- 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
- Windows7下Docker的安装
- 微信小程序 一些要点
- 为什么 React Native 连遭 Airbnb、Udacity 抛弃?
- 瞬间几千次的重复提交,我用 SpringBoot+Redis 扛住了~
- Spring框架从入门到精通
- [java][马士兵j2se视频教程]
- 简单又好用得高效工具分享
- mysql启动服务报Found option without preceding group in config file
- yocto recipe构建流程介绍
- Proteus仿真工程文件打不开
- CCNA初学(第三课)
- 苏黎世大学研发了一种算法 可让无人机像汽车一样在街道上行驶
- 漫画算法python篇_漫画算法:小灰的算法之旅(Python篇)(全彩)
- Centos Stream 9安装docker-ce
- 职场思维:你的屁股决定你的未来?一张图,点醒了大部分人!建议收藏
- 放血法治疗中风有奇效