解决vue项目router切换太慢问题


Posted in Javascript onJuly 19, 2020

问题定位:

随着项目增大,有一天突然发现页面切换时候,要等1-2s页面才切换过去,然后就开始定位问题,刚开始以为时页面组件太多导致的,通过删除组件,发现没啥改善,然后就在两个页面打印日志,第二页面created周期时间和路由切换时间相差不大,可以排除是页面渲染耗时。然后在第一个页面的destroyed周期里面打印日志,发现destroyed->router切换耗时1.5s左右,这时候定位问题是vue的destroyed周期耗时。

destroyed周期耗时:

这时候就考虑destroyed为啥要那么久,这时候就很纳闷,第一反应肯定是页面组件太多,这是把组件都删了,还是很慢,然后页面就剩下一个表格和查询条件,然后就想是不是数据量太大导致destroyed耗时,然后就查页面接口,发现有个list接口有4000多条数据,然后去掉接口,页面切换立马流畅了;就想数据多为啥导致销毁耗时,然后就想到了这个list是下拉框,这4000多条数都渲染在页面上,销毁不耗时才怪呢。

selected下拉框数据多,导致销毁耗时

然后就想办法处理select数据多问题,第一时间想用服务端过滤,想到服务端性能跟不上,只能在前端过滤;然后就想办法在前端过滤,初始化不给值,筛选的时候才给筛选过后的值

remoteMethod(query) {
   if (query !== "") {
    this.selectLoading = true;
    setTimeout(() => {
     this.selectLoading = false;
     this.source.storeSelectList = this.source.storeList.filter(item => {
      return (
       item.storeName && item.storeName.toLowerCase().indexOf(query.toLowerCase()) > -1
      );
     });
    }, 200);
   } else {
    this.source.storeSelectList = this.search.brandId
     ? this.source.storeList
     : [];
   }
  }

补充知识:vue路由懒加载链接过多导致本地开发热更新慢的解决

解决办法

通过vue-cli来构建的项目正常情况下一般的热更新会在1-10s之间,但是当项目中的路由链接数量达到一定数目的时候我发现热更新的速度大幅增加.甚至长达2-3分钟之久,这就让我坚决不能忍了,随便改点东西就要等如此之久…当然这个跟电脑的CPU是有一定关系的

于是开始着手解决问题,不过查了好久愣是没有什么解决办法,后来在一位大佬的帮助下才解决.顺便利用这次机会记录一下这个过程

首先,在router文件下面创立两个js文件,分别为

_import_development.js

_import_production.js

如图:

解决vue项目router切换太慢问题

上代码

_import_development.js

这个文件用作本地开发用

module.exports = file => require('@/views/' + file + '.vue').default

_import_production.js

这个文件用过打包部署用

module.exports = file => () => import('@/views/' + file + '.vue')

然后需要在index.js里面修改一下

const _import = require('./_import_' + process.env.NODE_ENV);

export const routers = [
  {
    path: '/',
    name: 'home',
    meta: { 
      title: '主页'
    },
    component: _import('home')
  },
]

这样修改以后在本地开发就不会出现热更新变慢的情况了

基本都在几秒之内

解决vue项目router切换太慢问题

不过这个方法只限于路由都在前端项目里写固定的情况下

如果是动态路由我没有试过,不清楚有没有用

以上这篇解决vue项目router切换太慢问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 判断浏览器类型及版本
Feb 21 Javascript
css结合js制作下拉菜单示例代码
Feb 27 Javascript
javascript的propertyIsEnumerable()方法使用介绍
Apr 09 Javascript
javascript实现10个球随机运动、碰撞实例详解
Jul 08 Javascript
jQuery实现日期联动效果实例
Jul 26 Javascript
JavaScript动态检验密码强度的实现方法
Nov 09 Javascript
JS非行间样式获取函数的实例代码
Jun 05 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
Jun 24 Javascript
layui动态加载多表头的实例
Sep 05 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
国内常用的js类库大全(CDN公共库)
Jun 24 Javascript
JavaScript如何优化逻辑判断代码详解
Jun 08 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
Jul 19 #Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 #Javascript
解决vue中el-tab-pane切换的问题
Jul 19 #Javascript
解决echarts图表使用v-show控制图表显示不全的问题
Jul 19 #Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 #Javascript
vue实现的多页面项目如何优化打包的步骤详解
Jul 19 #Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 19 #Javascript
You might like
PHP的5个安全措施小结
2012/07/17 PHP
使用js+jquery实现无限极联动
2013/05/23 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
vue数字类型过滤器的示例代码
2017/09/07 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
VUE前后端学习tab写法实例
2019/08/06 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python ljust rjust center输出
2008/09/06 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
Python Django搭建网站流程图解
2020/06/13 Python
python为什么会环境变量设置不成功
2020/06/23 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
理工大学毕业生自荐信
2013/11/01 职场文书
《一株紫丁香》教学反思
2014/02/19 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
企业投资意向书
2015/05/09 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
JavaScript组合继承详解
2021/11/07 Javascript