解决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 验证表单(form)中多选框(checkbox)值
Sep 08 Javascript
JS 实现双色表格实现代码
Nov 24 Javascript
JavaScript 产生不重复的随机数三种实现思路
Dec 13 Javascript
点击页面其它地方隐藏该div的两种思路
Nov 18 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
Feb 04 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
May 03 Javascript
Bootstrap布局之栅格系统详解
Jun 13 Javascript
javascript动画之磁性吸附效果篇
Dec 09 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
Nov 27 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
vue3为什么要用proxy替代defineProperty
Oct 19 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
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
vue-loader教程介绍
2017/06/14 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
Python 异常处理实例详解
2014/03/12 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
python中使用asyncio实现异步IO实例分析
2021/02/26 Python
Yahoo-PHP面试题4
2012/05/05 面试题
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
SQL数据库笔试题
2016/03/08 面试题
总经理工作职责范文
2014/03/14 职场文书
党员创先争优心得体会
2014/09/11 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
2014离婚协议书范文(3篇)
2014/11/29 职场文书
项目合作意向书
2015/05/08 职场文书
二审代理词范文
2015/05/25 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
作文之亲情600字
2019/09/23 职场文书
使用 JavaScript 制作页面效果
2021/04/21 Javascript
Python3 类型标注支持操作
2021/06/02 Python
深入理解go slice结构
2021/09/15 Golang