解决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 日期处理之时区问题
Oct 08 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
jQuery函数的等价原生函数代码示例
May 27 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
Jun 20 Javascript
Angular实现的简单定时器功能示例
Dec 28 Javascript
angular json对象push到数组中的方法
Feb 27 Javascript
Vue不能检测到Object/Array更新的情况的解决
Jun 26 Javascript
Vue $emit $refs子父组件间方法的调用实例
Sep 12 Javascript
js事件on动态绑定数据,绑定多个事件的方法
Sep 15 Javascript
JavaScript工具库之Lodash详解
Jun 15 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
vue video和vue-video-player实现视频铺满教程
Oct 30 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
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
Js 中debug方式
2010/02/07 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Win10下Python环境搭建与配置教程
2016/11/18 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
介绍一下gcc特性
2012/01/20 面试题
师范生个人推荐信
2013/11/29 职场文书
产品促销活动策划书
2014/01/15 职场文书
《称象》教学反思
2014/04/25 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
高考学习决心书
2015/02/04 职场文书
2015年实习单位评语
2015/03/25 职场文书
python 实现体质指数BMI计算
2021/05/26 Python