在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 首屏加载时间优化相关推荐

  1. Vue首屏加载速度优化,提升80%以上

    在Vue项目中,引入到工程中的所有js.css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏.若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首屏 ...

  2. Vue首屏加载速度优化,我用这几个技巧提升80%以上

    作者:谁动了我的橘子 原文链接:https://juejin.im/post/5edf5b22e51d4578975a7024 在Vue项目中,引入到工程中的所有js.css文件,编译时都会被打包进v ...

  3. vue项目优化 - 网站首屏加载时间

    文章目录 1. 首先打包后看看加载时间 2. vendor 2.1. 路由懒加载 2.2. (@vue/cli < 3.0.0) map.gzip.console.log 2.3. (@vue/ ...

  4. Vue首屏加载白屏问题及解决方案

    Vue首屏加载白屏问题及解决方案 首先说一下首页加载为什么会白屏? 先说下 SPA 单页面的加载过程 首先就是 html ,也就是 FP 阶段 FP(全称"First Paint" ...

  5. 接手同事vue项目两个月的血和泪,关于vue项目性能优化,缩短首屏加载时间

    最近接手了别人做的vue项目,项目跑起来后,有些页面很卡,首屏加载也慢,打包速度也慢.于是,研究了很久vue的项目性能优化,下面我将从两个部分来详解vue项目的性能优化: 代码优化 webpack打包 ...

  6. vue首屏加载速度慢_Vue首屏加载速度优化如何提升80%?本文详解

    在Vue项目中,引入到工程中的所有js.css文件,编译时都会被打包进vendor.js,浏览器在加载该文件之后才能开始显示首屏.若是引入的库众多,那么vendor.js文件体积将会相当的大,影响首屏 ...

  7. vue 关闭 窗口后清除所有数据_Vue首屏加载速度优化,我用这几个技巧提升80%以上...

    前端潮咖 点击上面蓝字,关注我们! 关注 关注前端潮咖,每日精选好文 作者:谁动了我的橘子 来源:https://juejin.im/post/5edf5b22e51d4578975a7024 在Vu ...

  8. 浅谈Vue单页应用首屏加载速度优化方案

    心语:最不会利用时间的人,最会抱怨时间不够 趁着五一放假,刚好最近天气也是不好,.所以抽出一点时间写一点东西,也算是不辜负这个美好的假期吧!小编也祝愿大家五一快乐,玩得愉快哈 随着各大前端框架的诞生以 ...

  9. Vue 首屏加载优化(dist 打包文件从 5M+ 缩减到 324kb)

    最近在做 Vue 项目的首屏优化,效果不错,在这里将经验分享给大家,总的优化措施是以下四点. 优化方式1:将项目中用到的图片移动到百度云文件存储 优化方式2:使用路由懒加载 优化方式3:关闭 sour ...

最新文章

  1. 一次bug死磕经历之Hbase堆内存小导致regionserver频繁挂掉
  2. 差异备份、增量备份、完全备份的区别
  3. java运算符 —(5)
  4. 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
  5. Windows7下Docker的安装
  6. 微信小程序 一些要点
  7. 为什么 React Native 连遭 Airbnb、Udacity 抛弃?
  8. 瞬间几千次的重复提交,我用 SpringBoot+Redis 扛住了~
  9. Spring框架从入门到精通
  10. [java][马士兵j2se视频教程]
  11. 简单又好用得高效工具分享
  12. mysql启动服务报Found option without preceding group in config file
  13. yocto recipe构建流程介绍
  14. Proteus仿真工程文件打不开
  15. CCNA初学(第三课)
  16. 苏黎世大学研发了一种算法 可让无人机像汽车一样在街道上行驶
  17. 漫画算法python篇_漫画算法:小灰的算法之旅(Python篇)(全彩)
  18. Centos Stream 9安装docker-ce
  19. 职场思维:你的屁股决定你的未来?一张图,点醒了大部分人!建议收藏
  20. 放血法治疗中风有奇效

热门文章

  1. 阿里云IMM智能媒体文件预览
  2. win7不能在本地计算机启动防火墙,Win7防火墙启动不了的原因及解决办法
  3. 计算机文化基础多选题答案,计算机基础多选题集(附答案)
  4. 鸿蒙源码图片,全网最全的鸿蒙源码结构分析(附自制4张架构图)
  5. yolov5 训练时报错踩坑(不定时更新)
  6. 一款原型设计工具“墨刀”的介绍
  7. 概率统计:互不相容与相互独立
  8. 事件A和B之间相互独立与互不相容的理解
  9. 基于控制的角度无人机集群——避障(有源代码)
  10. BiliBili下载.flv视频文件重命名