解决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 web对话框与弹出窗口
Feb 22 Javascript
javaScript 读取和设置文档元素的样式属性
Apr 14 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
May 08 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
Feb 13 Javascript
JS+DIV实现鼠标划过切换层效果的方法
May 25 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
Feb 18 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
Jun 01 Javascript
详解vue静态资源打包中的坑与解决方案
Feb 05 Javascript
详解js的作用域、预解析机制
Feb 05 Javascript
Vue使用json-server进行后端数据模拟功能
Apr 17 Javascript
在vue项目中封装echarts的步骤
Dec 25 Vue.js
JS实现扫雷项目总结
May 19 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
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
php获取某个目录大小的代码
2008/09/10 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
2014/02/10 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
Python使用minidom读写xml的方法
2015/06/03 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python爬取51job中hr的邮箱
2016/05/14 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
python批量下载抖音视频
2019/06/17 Python
python文件操作的简单方法总结
2019/11/07 Python
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
法院信息化建设方案
2014/05/21 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
技术支持岗位职责
2015/02/13 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
《小小的船》教学反思
2016/02/18 职场文书
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers