解决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 相关文章推荐
jquery 最简单的属性菜单
Oct 08 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
Jul 05 Javascript
JavaScript实现格式化字符串函数String.format
Dec 16 Javascript
微信小程序 数据绑定及运算的简单实例
Sep 20 Javascript
Vue官方文档梳理之全局配置
Nov 22 Javascript
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
react-router 路由切换动画的实现示例
Dec 03 Javascript
微信小程序搭建自己的Https服务器
May 02 Javascript
vue实现的上拉加载更多数据/分页功能示例
May 25 Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
php调用mysql存储过程实例分析
2014/12/29 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
Python生成随机数组的方法小结
2017/04/15 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
python多线程与多进程及其区别详解
2019/08/08 Python
python实现四人制扑克牌游戏
2020/04/22 Python
Python中无限循环需要什么条件
2020/05/27 Python
Python基础教程之输入输出和运算符
2020/07/26 Python
用纯css3和html制作泡沫对话框实现代码
2013/03/21 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
2015/04/24 HTML / CSS
国际经济贸易专业推荐信
2013/11/06 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
咖啡店创业计划书
2014/08/15 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
详解thinkphp的Auth类认证
2021/05/28 PHP