动态添加路由基本功能动态添加路由基本功能
let routes=[{ path: '/login', name: 'login', component: () => import('../components/Login.vue') }]
this.$router.addRoutes(routes)
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: '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,

},

]
},


{

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.jsmain.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()
})


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.vueapp.vue
let routes=[处理后路由信息]
this.$router.addRoutes(routes)
this.$nextTick(i=>{

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

this.$router.replace(sessionStorage.getItem("pathName"))//跳转指定地址 否则404
})补充知识:vue路由进入下一层返回上一层重复跳转之前进入页面补充知识:补充知识:vue路由进入下一层返回上一层重复跳转之前进入页面说明说明vue路由返回上一层,使用 this.$router.back(-1)进入其他页面用 this.$outer.push('home')这样当我进入页面会发生如下场景进入页面时:A-B-C返回页面时:C-B-A总的路径行程:A-B-C-B-A总的来是:页面返回时重复返回上一层解决解决官方文档
this.$outer.push('home') // 会重复添加路由信息进入路由记录
this.$outer.replace('home') // 会替换之前的路由记录
this.$outer.push('home') // 会重复添加路由信息进入路由记录this.$outer.replace('home') // 会替换之前的路由记录
this.$outer.replace('home') // 跳转页面推荐用这个
this.$outer.replace('home') // 跳转页面推荐用这个以上这篇vue路由结构可设一层方便动态添加路由操作就是小编分享给大家的全部内容了,希望能给大家一个参考。