为何当一个VUE项目过大时,打包之后初次访问首页加载速度会异常的缓慢,是什么原因导致以及如何解决这些问题?

首页打开速度慢的原因

其实浏览器加载一个页面的过程就是通过http协议从服务器端下载项目所需要的资源,将html js 图片文件下载到本地解析后显示出来,如果出现网页加载速度慢,打不开无非以下几个原因:

程序自身的Bug导致页面加载异常

项目的资源太大(如果js 大的图片)导致访问浏览器从服务器获取的所需资源的时间较长

网速慢等

所以当我们的项目出现这种问题时只要F12开启浏览器的控制台看下network中请求资源的耗时即可找出问题,通过观察,现在前端的单页面应用都是是靠 js 生成,因为是spa,而且所有的渲染都在脚本上,js执行需要时间。另外加载js也要时间,所以页面越大,加载时间越长,而且js执行的时间也长,所以会出现白屏的情况。

如何解决这个问题

导致这个问题的原因就是我们项目打包后资源太大导致,所以我们可以尽量的减少优化打包后文件的大小,这样问题便迎刃而解,怎么去优化通常有以下几点:

利用路由的懒加载实现组件的按需加载,这样配置后只有当路由被访问时才会加载对应的组件,而不是在加载首页的时候就直接加载。

{

path: "/usercenter/personal",

title: "个人信息",

component: resolve => {

require(["@/views/usercenter/personal.vue"], resolve); //通过requie动态加载即可

}

},

异步加载组件

既然是异步加载,就会存在加载失败等异常情况。这时候怎么办呢?看官网绐出的另一个特性

这样就可以完美的解决我们的疑问了,当异步组件加载失败后会显示错误的组件。

1. 禁用线上生成的map文件

npm run build编译之后,我们查看编译生成的文件,发现有很多.map文件,这些文件也占了不小的空间。.map文件的作用是帮助编译后的代码调试,但是我们上线的代码已经调试完成,所以上线时可以不生成.map文件。

productionSourceMap:

false//配置webpack中productionSourceMap值为false即可

2. 启用Nginx的gzip压缩功能

在nginx.conf中的http{ }中添加如下代码即可:

gzipon;

gzip_disable "msie6";

gzip_vary on;

gzip_proxied any;

gzip_comp_level 1;

gzip_buffers 16 8k;

gzip_http_version 1.0;

gzip_min_length 256;

gzip_types text/plain text/css

application/jsonapplication/x-javascript text/xml

application/xmlapplication/xml+rss text/javascript

application/vnd.ms-fontobjectapplication/x-font-ttf font/opentype

image/svg+xml image/x-icon

image/jpeg image/gifimage/png;

配置好后重启服务重新访问网站在控制台中查看是否生效

3. 对于一些通用的工具库可以采用CDN引入,如Jquery,在index.html中从CDN引入,去掉其他页面的组件import,修改webpack.base.config.js,在externals中加入该组件即可。

4. 服务器端SSR渲染。 SSR需要在页面架构做一些对应的调整,稍微复杂,具体可参考https://segmentfault.com/a/1190000015964813。

5. 代码层面的优化,精灵图,组件化模块化,优化代码逻辑,提高代码复用性等。

【编辑推荐】

【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0

vue 加载太慢_如何提高Vue项目首页的加载速度相关推荐

  1. vscode vue解决跨域_Vue + WebPack + Typescript初学者VSCode项目 (按需加载、跨域调试、await/async)...

    万事开头难,一个好的Hello World程序可以节省我们好多的学习时间,帮助我们快速入门.Hello World程序之所以是入门必读必会,就是因为其代码量少,简单易懂.但我觉得,还应该做到功能丰富, ...

  2. eui加载时间长_面试官:为什么 HashMap 的加载因子是0.75?

    有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap的加载因子为什么是0.75? 本文主要对以下内容进行介绍: 为什 ...

  3. vue img src 动态赋值_一个基于Vue的开源延迟加载插件——vuelazyload

    介绍 vue-lazyload是一个基于Vue的延迟加载插件,用于延迟加载Vue组件或者图像. Github https://github.com/hilongjw/vue-lazyload 特点 轻 ...

  4. vue单文件props写法_详解Vue 单文件组件的三种写法

    详解Vue 单文件组件的三种写法 JS构造选项写法 export defaul { data, methods, ...} JS class写法 @Component export default c ...

  5. vue输入框输入触发事件_详解.vue文件中监听input输入事件(oninput)

    详解.vue文件中监听input输入事件(oninput) .vue文件其实是一个组件,关于它的说明我之前也写过一篇文章,地址:.vue文件,今天这篇文章要讲的是.vue文件中监听input的输入值变 ...

  6. vue 代理设置 访问图片_详解Vue源码之数据的代理访问

    概念解析: 1) 数据代理: 通过一个对象代理对另一个对象(在前一个对象内部)中属性的操作(读/写) 2) vue 数据代理: 通过 vm 对象(即this)来代理 data 对象中所有属性的操作 3 ...

  7. iframe js 加载失败_如何提高Vue项目首页的加载速度

    为何当一个VUE项目过大时,打包之后初次访问首页加载速度会异常的缓慢,是什么原因导致以及如何解决这些问题? 首页打开速度慢的原因 其实浏览器加载一个页面的过程就是通过http协议从服务器端下载项目所需 ...

  8. vue 项目加载顺序_如何提高Vue项目首页的加载速度

    为何当一个VUE项目过大时,打包之后初次访问首页加载速度会异常的缓慢,是什么原因导致以及如何解决这些问题? 首页打开速度慢的原因 其实浏览器加载一个页面的过程就是通过http协议从服务器端下载项目所需 ...

  9. vue 图片拖动加载 类似于地图_前端性能优化之图片懒加载(附vue自定义指令)...

    作者:lzg9527 链接:https://juejin.cn/post/6903774214780616718 在类电商类项目,往往存在大量的图片,如 banner 广告图,菜单导航图,美团等商家列 ...

最新文章

  1. 11 Python - dict
  2. 在onelogin中使用OpenId Connect Implicit Flow
  3. jQuery事件3——trigger触发事件
  4. 前端返回的json中文变问号
  5. jquery-ui寺
  6. python 机器人开发库,如何为机器人框架创建自定义Python代码库
  7. 抖音回应“天价烤虾”事件:已经在调查违规广告主
  8. js怎么给div加滑动条 vue给弹出层加滑动条(一分钟学会用js加滚动条)
  9. WP7开发平台介绍及开发注意事项【WP7学习札记之二】
  10. 13.程序员的自我修养---运行库实现
  11. Numpy的终极备忘录
  12. 优秀的Web前端开发工程师需要具备的4个条件
  13. 包含类别变量的中介模型检验方法
  14. LeetCode——解数独
  15. 大学学计算机7代i5够吗,学生党必看:最新的7代酷睿与Core i5相比该选谁?
  16. SAR成像系列:【7】合成孔径雷达(SAR)成像算法-后向投影(Back Projecting)算法(附Matlab代码)
  17. STM32:外部中断的使用
  18. python找出素数_python找素数
  19. AES-GCM算法 Java与Python互相加解密
  20. java int随机数_java的三种随机数生成方式

热门文章

  1. OpenCVQt学习之一——打开图片文件并显示
  2. 收藏的一个关于C# ToString的方法集合
  3. 日期格式化方法封装,对外暴露使用
  4. selenide UI自动化进阶二 pageObject实现页面管理
  5. SSM框架下分页的实现(封装page.java和List?)
  6. DesignPattern_Java:Proxy Pattern
  7. SSD6中Exercise4 (substitute.cpp) 答案解析
  8. 建立高可用性的数据库群集
  9. eclipse安装emmet之后ctrl+d热键冲突的解决方法
  10. windows环境:dos 通过ftp连接到vsftpd 显示乱码解决方法