美文网首页Vue.js前端Vue专辑
Vue 路由配置防止组件重复加载注销,使组件复用减少资源消耗

Vue 路由配置防止组件重复加载注销,使组件复用减少资源消耗

作者: 承诺一时的华丽 | 来源:发表于2020-03-13 15:34 被阅读0次

最近再做前端优化的时候发现,同一个组件在不同层级的路由进行注册,当在不同层级的路由中进行页面跳转会重复销毁加载

一、问题复现

  • 同一组件layoutHeaderAside在不同层级的路由配置
[{
  path: '/',
  redirect: { name: 'index' },
  component: layoutHeaderAside,
  children: [
    {
      path: 'index',
      name: 'index',
      component: () => import('@/pages/index')
    },
    {
      path: 'list',
      name: 'list',
      component: () => import('@/pages/list')
    }
  ]
},
{
  path: '/detail',
  redirect: { name: 'detail' },
  component: layoutHeaderAside,
  children: [
    {
      path: 'detail',
      name: 'detail',
      component: () => import('@/pages/detail')
    },
    {
      path: 'info',
      name: 'info',
      component: () => import('@/pages/info')
    }
  ]
}]

假设在index.vue进行页面跳转到detail.vuethis.$router.push({name: 'detail'})。这种路由配置将导致layoutHeaderAside组件重复销毁beforeDestroy()加载mounted()

二、问题优化

  • 将路由合并, 通过BlankLayout(空白组件),就可以同时共用layoutHeaderAside组件,同时又支持当前路由组下级公共配置
[{
  path: '/',
  redirect: { name: 'index' },
  component: layoutHeaderAside,
  children: [
    {
      path: 'index',
      name: 'index',
      component: () => import('@/pages/index')
    },
    {
      path: 'list',
      name: 'list',
      component: () => import('@/pages/list')
    },
    {
      path: '/detail',
      redirect: { name: 'detail' },
      component: BlankLayout,  //BlankLayout为空白组件,就可以同时共用layoutHeaderAside组件,同时又支持当前路由组下级的公共配置
      children: [
        {
          path: 'detail',
          name: 'detail',
          component: () => import('@/pages/detail')
        },
        {
          path: 'info',
          name: 'info',
          component: () => import('@/pages/info')
        }
      ]
    }
  ]
}]
  • BlankLayout.vue
<template>
<div>
    <router-view></router-view>
</div>
</template>

<script>
export default {
  name: 'BlankLayout'
}
</script>

<style scoped>
</style>
  • 引用方式
import BlankLayout from '@/layout/BlankLayout'
  • 路由跳转原理图解


    如果频繁的页面切换,将导致大量的资源消耗
    image.png

相关文章

网友评论

    本文标题:Vue 路由配置防止组件重复加载注销,使组件复用减少资源消耗

    本文链接:https://www.haomeiwen.com/subject/rxskshtx.html