解决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实现等比例缩放图片效果插件
Jul 24 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
Sep 13 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
Nov 09 Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 Javascript
mailto的使用技巧分享
Dec 21 Javascript
javascript用户注册提示效果的简单实例
Aug 17 Javascript
jQuery ajax serialize() 方法使用示例
Nov 02 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
Apr 12 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
Feb 25 Javascript
KnockoutJs快速入门教程
May 16 Javascript
Vue Socket.io源码解读
Feb 07 Javascript
webpack v4 从dev到prd的方法
Apr 02 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 jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
javascript使用activex控件的代码
2011/01/27 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
javascript实现倒计时N秒后网页自动跳转代码
2014/12/11 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
遍历python字典几种方法总结(推荐)
2016/09/11 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
python判断自身是否正在运行的方法
2019/08/08 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
Python hmac模块使用实例解析
2019/12/24 Python
零基础小白多久能学会python
2020/06/22 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
大学生职业生涯规划书模板
2014/01/18 职场文书
市场总经理岗位职责
2014/04/11 职场文书
质量提升方案
2014/06/16 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
Nginx实现负载均衡的项目实践
2022/03/18 Servers