详解vue页面首次加载缓慢原因及解决方案


Posted in Javascript onNovember 06, 2019

第一次打包vue的项目部署到服务器下时,发现初次加载特别的缓慢,将近20s页面才加载出来,完全没有开发环境上的那么流畅。主要原因是页面在打包后如果不进行相关配置会导致资源文件特别的大,一次想要全部加载完成会特别的耗时。这里简单总结一下自己用到的一些优化的方案。

首先我们可以安装webpack-bundle-analyzer 插件,通过这个插件我们可以在打包的时候看到打包文件的大小,可以明显的看出哪些文件比较大。

解决方案一

1,去掉编译文件中map文件。在编译好后,我们会看到文件夹下有特别多的.map文件,这些文件主要是帮助我们线上调试代码,查看样式。所以为了避免部署包过大,通常都不生成这些文件。

在 config/index.js 文件中将productionSourceMap 的值设置为false. 再次打包就可以看到项目文件中已经没有map文件 (文件大小 35MB-->10.5MB)

2,vue-router 路由懒加载

懒加载即组件的延迟加载,通常vue的页面在运行后进入都会有一个默认的页面,而其他页面只有在点击后才需要加载出来。使用懒加载可以将页面中的资源划分为多份,从而减少第一次加载的时候耗时。

懒加载路由配置:

详解vue页面首次加载缓慢原因及解决方案

非懒加载路由配置:

详解vue页面首次加载缓慢原因及解决方案

如图所示为通过懒加载后打包的js文件。而非懒加载的打包后一般只有一个app.js 文件。

详解vue页面首次加载缓慢原因及解决方案

解决方案二

使用CDN减小代码体积加快请求速度

1. 为什么使用CDN

使用CDN主要解决两个问题:

  • 打包时间太长、打包后代码体积太大,请求慢
  • 服务器网络不稳带宽不高,使用cdn可以回避服务器带宽问题

2. 具体步骤

1.在/index.html中引入CDN

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>vue-manage-system</title>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">

    <script src="https://cdn.bootcss.com/vue/2.5.3/vue.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/2.7.0/vue-router.min.js"></script>
    <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
    <link rel="stylesheet" href="https://cdn.bootcss.com/element-ui/2.4.0/theme-chalk/index.css" rel="external nofollow" >
    <script src="https://cdn.bootcss.com/element-ui/2.4.0/index.js"></script>


  </head>
  <body>
    <div id="app"></div>
  </body>
</html>

注意:修改配置后还是提示Element未定义,是因为Element依赖Vue,vue.js需要在element-ui之前引入,所以vue.js也要改为cnd的引入方式.

2.修改/build/webpack.base.conf.js中修改配置。给module.exports添加externals属性(详见https://webpack.docschina.org/configuration/externals/),其中键是项目中引用的,值是所引用资源的名字。需要注意的是资源名需要查看所引用的JS源码,查看其中的全局变量是什么,例如element-ui的全局变量就说ELEMENT

module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
   app: './src/main.js'
  },
  externals: {
   'vue': 'Vue',
   'vue-router': 'VueRouter',
   'ElementUI': 'ELEMENT',
   'axios': 'axios',
  }
 }

3.删除原先的import

如果不删除原先的import,项目还是会从node_modules中引入资源。
也就是说不删的话,npm run build时候仍会将引用的资源一起打包,生成文件会大不少。所以我认为还是删了好。

如:

详解vue页面首次加载缓慢原因及解决方案

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中的Screen屏幕对象
Jan 16 Javascript
基于jQuery的前端数据通用验证库
Aug 08 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
Mar 01 Javascript
JS操作CSS随机改变网页背景实现思路
Mar 10 Javascript
javascript实现链接单选效果的方法
May 13 Javascript
javascript中setTimeout使用指南
Jul 26 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
微信小程序实现选项卡功能
Jun 19 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
Sep 30 Javascript
详解微信小程序-canvas绘制文字实现自动换行
Apr 26 Javascript
初学vue出现空格警告的原因及其解决方案
Oct 31 Javascript
jquery实现简易验证插件封装
Sep 13 jQuery
electron 安装,调试,打包的具体使用
Nov 06 #Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 #Javascript
在vue中阻止浏览器后退的实例
Nov 06 #Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 #Javascript
vue项目强制清除页面缓存的例子
Nov 06 #Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 #Javascript
JS实现随机抽取三人
Nov 06 #Javascript
You might like
PHP中路径问题的解决方案
2006/10/09 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
javascript类继承机制的原理分析
2009/09/12 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
微信小程序开发之选项卡(窗口底部TabBar)页面切换
2017/04/12 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
python的else子句使用指南
2016/02/27 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
实习生体会的自我评价范文
2013/11/28 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
商业活动邀请函
2014/02/04 职场文书
公司授权委托书
2014/04/04 职场文书
成立公司计划书
2014/05/07 职场文书
本科生求职信
2014/06/17 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
财务管理制度范本
2015/08/04 职场文书
小学大队委竞选口号
2015/12/25 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
班组长如何制订适合本班组的工作计划?
2019/07/10 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis
Python实现自动玩连连看的脚本分享
2022/04/04 Python