解决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 26 Javascript
运用jquery实现table单双行不同显示并能单行选中
Jul 25 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
Aug 12 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
Jul 31 Javascript
JS实现关键字搜索时的相关下拉字段效果
Aug 05 Javascript
使用jquery实现放大镜效果
Sep 02 Javascript
jquery实现右键菜单插件
Mar 29 Javascript
javascript this详细介绍
Sep 19 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
React中this丢失的四种解决方法
Mar 12 Javascript
vue实现数字动态翻牌的效果(开箱即用)
Dec 08 Javascript
uniapp开发打包多端应用完整方法指南
Dec 24 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中的观察者模式简单实例
2015/01/20 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
python简单读取大文件的方法
2016/07/01 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
Python面向对象编程基础实例分析
2020/01/17 Python
keras 回调函数Callbacks 断点ModelCheckpoint教程
2020/06/18 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
建筑毕业生自我鉴定
2013/10/18 职场文书
财务工作检讨书
2014/10/29 职场文书
上课说话检讨书500字
2014/11/01 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
幼儿教师师德师风自我评价
2015/03/05 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js