vue路由结构可设一层方便动态添加路由

动态添加路由基本功能

let routes=[{ path: '/login', name: 'login', component: () => import('../components/Login.vue') }]

this.$router.addRoutes(routes)

涉及多层路由嵌套 如图

单纯使用addRoutes 层级结构不同

修改路由结构

例:

{
          name:'account',
          path: '/account/account',
          meta: {
            title: '个人中心',
            requireAuth: true
          },
          component: account,
          children:[
            {
              name: 'account',
              path: '/account/account',
              meta: {
                title: '账号设置',
                requireAuth: true
              },
              component: setAccount,
            },
            {
              name: 'childMgt',
              path: '/account/childMgt',
              meta: {
                title: '子账号管理',
                requireAuth: true
              },
              component: childMgt,
            },
            
          ]
},

修改单一结构

{
          name:'account',
          path: '/account/account',
          meta: {
            title: '个人中心',
            requireAuth: true
          },
          component: account,
          children:[
            {
              name: 'account',
              path: '/account/account',
              meta: {
                title: '账号设置',
                requireAuth: true
              },
              component: setAccount,
            },
          ]
},
{
          name:'account',
          path: '/account/childMgt',
          meta: {
            title: '个人中心',
            requireAuth: true
          },
          component: account,
          children:[
            {
              name: 'userMgt',
              path: '/account/childMgt',
              meta: {
                title: '子账号管理',
                requireAuth: true
              },
              component: childMgt,
            },
          ]
},

每一层单独包含一个子集合方便权限管理动态添加

 

main.js

router.beforeEach((to, from, next) => {
  if (from.name == null) { //页面刷新
		let pathName = sessionStorage.getItem("pathName") //暂存上一个路由
		if (pathName == to.path||pathName==to.redirectedFrom) {
		} else {
			sessionStorage.setItem("pathName", to.redirectedFrom)
		}
	} else {
    sessionStorage.setItem("pathName", to.path)
	}
  next()
})

app.vue

let routes=[处理后路由信息]
this.$router.addRoutes(routes)
this.$nextTick(i=>{
    this.$router.replace(sessionStorage.getItem("pathName"))//跳转指定地址 否则404
})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值