vue路由切换页面的时候,卡顿:当前页面停留了一下,才切换到新页面

问题:我司项目嵌套了一个二开的编辑器页面,由于编辑器很大,初次进入编辑的时候需要加载很久大概3S左右才能显示页面。后续有需求需要通过router路由跳转到编辑器页面,每次在点击跳转按钮的时候会在当前页面停留4s到9s不等才能前往到编辑器页面。老总说用户体验很不好叫我先进入到编辑页面再去加载数据。(改成这样会导致白屏一段时间)

解决方案

使用defineAsyncComponent  API异步加载组件  可以接受一个返回 Promise 的工厂函数。Promise 的 resolve 回调应该在服务端返回组件定义后被调用。你也可以调用 reject(reason) 来表示加载失败。 

下面这个写法是对静态路由的使用

 {

    path: '/home',

    name: '/home',

    component: defineAsyncComponent(() => import('@/views/home/index.vue')),

    meta: {

      title: 'AI创意',

      static: true,  //静态路由标识

    },

  },

动态路由使用 components 就是懒加载的路由路径 类似 () => import('@/views/home/index.vue') 你只需要在你项目的返回懒加载路径改成我下面这个写法就可以了

不建议全部都使用异步加载,不然项目首次记载可能压力比较大卡顿 我们最好是在需要的路由判断下

// 寻找视图组件
export const matchedSysRouteComponent = (component: string, parmeName: string): any => {
  const sysRouteMap = getSysRouteMap();
// components 就是懒加载的路由路径 类似 () => import('@/views/home/index.vue') 你只需要在你项目的返回懒加载路径改成我下面这个写法就可以了
  let components = defineAsyncComponent(sysRouteMap[toSysViewComponentPath(component, parmeName)])
  // let components = sysRouteMap[toSysViewComponentPath(component, parmeName)]
  if (!components) {
    console.error("实时注册动态路由失败,未找到组件路径", components);
  }

  return components;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值