解决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 相关文章推荐
smartcrop.js智能图片裁剪库
Oct 14 Javascript
Webpack 实现 Node.js 代码热替换
Oct 22 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
js实现右键自定义菜单
Dec 03 Javascript
利用Angularjs中模块ui-route管理状态的方法
Dec 27 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
Nov 19 Javascript
vue中倒计时组件的实例代码
Jul 06 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
Jul 07 Javascript
详解如何使用router-link对象方式传递参数?
May 02 Javascript
如何基于原生javaScript生成带图片的二维码
Nov 21 Javascript
js实现列表向上无限滚动
Jan 13 Javascript
VUE+Element实现增删改查的示例源码
Nov 23 Vue.js
解决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中cookies使用指南
2007/03/16 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
jquery对表单操作2
2011/04/06 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
动态更新highcharts数据的实现方法
2016/05/28 Javascript
jQuery焦点图左右转换效果
2016/12/12 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
python发送邮件接收邮件示例分享
2014/01/21 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
python3 re返回形式总结
2020/11/20 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
普师专业个人自荐信范文
2013/11/26 职场文书
中学生自我鉴定
2014/02/04 职场文书
面试必备的求职信
2014/05/25 职场文书
工作散漫检讨书
2014/09/16 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
史上最牛辞职信
2015/05/13 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers