vue静态路由(Vue动态路由实现逻辑)

1、登录后跳转的授权页redierect.vue,获取动态路由的数组,存储于store.ts,我来为大家讲解一下关于vue静态路由?跟着小编一起来看一看吧!

vue静态路由(Vue动态路由实现逻辑)

vue静态路由

1、登录后跳转的授权页redierect.vue,获取动态路由的数组,存储于store.ts

2、在main.ts 中引用路由守卫文件

import './router/permission';

3、在permission.ts中用到了

Router.beforeEach

导航前置守卫,在调用路由之前会先调用该方法,在该方法中通过store.ts的路由数组动态渲染路由后访问。

4、在asyncRouter.js通过定义getAsyncRoutes进行路由数组的格式化,同时此处也可以用来通过接口获取路由信息,但是我就不查了,太浪费资源。

permission.ts内容如下

// 进度条引入设置如上面第一种描述一样 import router from '@/router/index' import store from '@/store/index' import api from '@/api/index' // import { getToken } from '@/utils/auth' // get token from cookie import { getAsyncRoutes } from '@/utils/asyncRouter' const whiteList = ['/login','','/redirect']; router.beforeEach( async (to, from, next) => { // NProgress.start() // document.title = to.meta.title; // 获取用户token,用来判断当前用户是否登录 const hasToken = true; if (hasToken) { //白名单直接进入 if (whiteList.indexOf(to.path) >0) { next() //next({ path: '/' }) // NProgress.done() } else { //异步获取store中的路由 const route= store.getroutestatus() ; const hasRouters = route!='null' && route!=null && route!='1' //判断store中是否有路由,若有,进行下一步 if (route!=null && route=='1' ) { console.log(router.options); next() } else { //store中没有路由,则需要获取获取异步路由,并进行格式化处理 //author:lxfamn date:20210117 descrip: //这里没没有异步获取路由,而是从本地存储中直接获取,因为路由数组已在登录时获取完成 try { console.log('路由守卫'); const accessRoutes = getAsyncRoutes(await store.get_routes() ); // 动态添加格式化过的路由 if (accessRoutes.length) { accessRoutes.forEach(item => { router.addRoute('Home',item) }) } store.setroutestatus(1) console.log(to.path) // console.log(router.options); // console.log(router.getRoutes()); // console.log(router.hasRoute('abc')) // console.log(router.hasRoute('About')) // router.addRoute(accessRoutes); next({ ...to, replace: true }) } catch (error) { // Message.error('出错了') next(`/login?redirect=${to.path}`) } } } } else { if (whiteList.indexOf(to.path) !== -1) { next() } else { next(`/login?redirect=${to.path}`) } } }) router.afterEach(() => { })

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页