小白网-奉贤部落-奉贤免费信息发布平台

查看: 63|回复: 0

vue中静态路由(vue后端静态路由)

[复制链接]

2万

主题

0

回帖

8万

积分

论坛元老

Rank: 8Rank: 8

积分
88256
发表于 2025-7-26 13:03 | 显示全部楼层 |阅读模式
凡是我们在vue项目中设置前端路由,可是在某些项目中能够会碰到权限控制,所以我们介入到静态路由的设备中他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
静态路由设备一般有两种:(1)简单脚色路由设备:比如只触及治理员和普通用户的权限他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。凡是简单的脚色权限间接在前端设备他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
(2)复杂的路由权限设备:如OA系统、多个脚色的权限设置等他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。凡是后端需要返回路由表,前端衬着利用
1.简单脚色路由设备(1)设置项目路由权限他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
//Router . js从' Vue '导入Vue从' vue-router '导入路由器从' @/Layout 'Vue . use(Router)let async routes ={path:'/permission ',component: Layout,redirect:'/permission/page ',alwaysShow: true, name:' permission '
(2)新建一个公共的asyncRouter.js文件//async router . js/并判定当前脚色能否有权限函数能否有权限(roles,route){if(route . meta   amp;route . meta . roles){return roles . some(role =  gt;route . meta . roles . includes(role)]} else {return true}}递归过滤异步路由表,过滤脚色权限routes 导出函数filterasyncproutes(routes)routes . foreach(route =  gt;{const tmp = {...route }if(has permission(roles,tmp)){if(tmp . children){tmp . children = filterasyncproutes(tmp . children,roles)}}}})return RES}
(3)建立路由卫士:建立一个public permission.js文件,设备路由卫士导入路由器from’他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。/router'  import store from '他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。/store 'import n progress from ' n progress '//progress bar pluginimport ' n progress/n progress . CSS '//progress bar styleimport { gettoken } from ' @/utils/auth 'import { filterasyncproutes } from ' @/utils/async router . js 'n progress . configure({ show spinner:false })//进度条设置 const白名单whitelist{//进度条启动NProgress.start()//获得路由元中的题目,并设备为页面题目document . title = to . meta . title/获得令牌const hastoken = gettoken()//肯定当前用户能否登录If(hastoken){[/h If(to . path = = '/log in '){store . getters . roles . length  gt;0if(has Roles){next()} else {/Get user Rolesconstroles = away store . state . RolesGet role路由表const access routes = filterasyncproutes(away store . state . routes,Roles)//静态增加路由到路由器 router.addroutes(拜候路由) next ({...to,replace:true })} catch(error){//他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。重定向= $ {到他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。path } `)nprogress . done()}}} else {/用户未登录 if == -1) {//要跳转的路由能否是白名单中的路由,假如是,间接barnext()} else {/要跳转的路由不是白名单中的路由,间接跳转到登录页面重定向= $ {到他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。path } `)/End precision barn progress . done()}}]router . after each(()= {//End precision barn progress . done()})
(4)将permission.js文件引入main.js (5)登录时在store中存储脚色他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。(2)复杂的路由权限设备(后端静态返回路由数据)他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。(1)设置项目路由文件他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。这个文件里没有路由,大概有一些公共路由,也就是没有权限的路由他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
从“Vue”导入Vue从“vue-router”导入路由器从“@/layout”导入结构;vue . use(router)/设置项目中没有触及权限的公共路由导出常量路由= [ { path:'/login ',component:()= import(' @/views/log in '),hidden: true},{path: '/404 ',component:()=  gt;import('@/views/404 '),hidden: true},]const create router =()=  gt;新路由器({形式:' history ',scroll behavior:()=  gt;({ y: 0 }),routes:const routes})const router = create router()导出函数reset router(){const new router = create router()router . matcher = new router . matcher}导出默许路由器
(2)建立新的公共asyncRouter.js文件//引入诸如路由文件的公共路由import { constant routes } from '../router ';//结构组件是项目中的主页他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。切换路由时,仅切换结构import Layout from '@/layout '中的组件;导出函数getasyncproutes(routes){constres =[]//界说路由中需要的自界说称号 constkeys = ['path ',' name ',' children ',' redirect ',' meta' Hidden']//遍历路由数组重新构造可用的路由routes . foreach(item = >;{const new item = { };If(item.component){/判定item . component能否即是' Layout ',假如间接被引入的结构组件替换If(item . component = = ' Layout '){new item . component = Layout} else {/item . component不即是' Layout ',则暗示是组件的途径地址,所以间接被routenew item . component = resolve引入的方式替换Require([`@/views/$ { item . component } `],resolve)/这里最好用require他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。import在引入变量时会出现各类稀里糊涂的毛病/new item . component =(()= >;import(`@/views/$ { item . component } `);}}for(item中的const key){if(keys他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。includes(key)){new item[key]= item[key]}[/h  amp;new item . children . length){new item . children = getaasyncroutes(item . children)}RES . push(new item)})/返回已处置的可用线路他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
(3)建立路由保卫:建立一个public permission.js文件,设备路由保卫//进度条的设备如上面第一个描写中所述从'导入路由器他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。/router'  import store from '他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。/store 'import n progress from ' n progress '//progress barimport ' n progress/n progress . CSS '//progress bar styleimport { getToken } from ' @/utils/auth '//get token from cookieimport { getasync routes } from ' @/utils/async router 'const whiteList =['/log in '];router . before each(async(to,from,next)=  gt;{n progress . start()document . title = to . meta . title;//获得用户令牌,用于肯定当前用户能否登录const hastoken = gettoken()if(hastoken){if(to他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。path = = '/log in '){next({ path:'/' })[/Else {//异步获得存储中的路由let route = awaitstore . state . add routes;const hasRouters = route  amp amproute.length  gt0;//判定店内能否有线路他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。倘使有,进入下一步 if(有路由器){next()} else {/store他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。假如没有路由,需要获得异步路由并格式化[/] //静态增加格式化路由 router.addroutes(接入路由);下一个({...to,replace:true })} catch(error){/message . error(' error ')next(`/log in?redirect = $ { to . path } `)nprogress . done()}}}} else {if(whitelist . index of(to . path)!= =-1){next()} else {next(`/log in?redirect = $ { to . path } `)nprogress . done()}}})router . after each(()=  gt;{n progress . done()})
(4)将permission.js文件引入main.js (5)登录时,将路由信息存储在store中他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。//登录接口挪用后,挪用路由接口,后端会返回对利用户的route res.router他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。我们需要把它寄存在商铺里,这样其他地方也能获得这个他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。$ store.dispatch("增加线路",)
此时,全部静态路由可以经过,可是页面跳转和路由保卫处置是异步的,静态路由增加后会有空缺页跳转他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。这是由于当路由下一次履行时,路由器中的数据不存在()他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。此时,您可以经过window.location.reload()革新线路他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
后端路由格式:routerlist =[{" path ":/other ", "component": "layout "," redirect ":" no rect "," name "" meta ":{" title ":" test ",}," children ":{" path ":" A ",
留意:vue是一个单页面的利用,所以页面一革新就会丧失一些数据,所以我们需要将数据存储在当地的store中,以保证路由不会丧失他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。为了经过vue页面革新保存页面状态,您可以看到当页面革新时vue是若何保存状态信息的他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
最初微信官方账号:小何长大了,佛学更有素养了,都是他踩过的坑大概学过的工具他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
接待感爱好的朋友关注我他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。哦,我是何萧艾他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。大师一路进步,duck他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

GMT+8, 2025-11-11 18:41 , Processed in 2.346121 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表