解决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入门教程(9) Document文档对象
Jan 31 Javascript
JavaScript 高级篇之函数 (四)
Apr 07 Javascript
angularJS结合canvas画图例子
Feb 09 Javascript
javascript实现很浪漫的气泡冒出特效
Sep 05 Javascript
关于在Servelet中如何获取当前时间的操作方法
Jun 28 Javascript
详解js中的apply与call的用法
Jul 30 Javascript
JavaScript实现隐藏省略文字效果的方法
Apr 27 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
Jul 04 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
jquery 时间戳转日期过程详解
Oct 12 jQuery
原生js实现瀑布流效果
Mar 09 Javascript
JavaScript 去重和重复次数统计
Mar 31 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 和 MySQL 时区的一点总结
2008/03/26 PHP
php 数组使用详解 推荐
2011/06/02 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
php ajax实现文件上传进度条
2016/03/29 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
python分割和拼接字符串
2013/11/01 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Python判断字符串是否xx开始或结尾的示例
2019/08/08 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
日本乐天官方海外转运服务:Rakuten Global Express
2018/11/30 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
中学自我评价
2014/01/31 职场文书
目标责任书范本
2014/04/16 职场文书
护理专科学生自荐书
2014/07/05 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
学校教师培训工作总结
2015/10/14 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers