vite+vue-router4.x配置动态路由
创始人
2024-02-05 06:12:41
0

踩过的坑:

import直接导入组件;
router.addRoute 并不能一次性给你导入(即不是vue-router3.x以下的addRoutes);
addRoute后页面空白;

直接上才艺!

我的设计思路是登录后获取token,并存入cookies,然后进入后台管理页面,在路由拦截里判断有没有动态路由,没有则await请求后动态添加进来;
后台给我们的格式是:在这里插入图片描述
即一个树数据,需要我们通过递归来修改Import导入组件进来;
刚开始以为是之前vue-cli那种可以直接Import导入,试过了无数次最后console.log输出才发现在vite构建的项目里 import不能动态加载文件,需要用到vite的vite.meta.glob方法;
vite.meta.glob说明文档

声明一个函数来格式化后台传过来的数据:

import Main from 'src/layouts/admin.vue'
const modules = import.meta.glob('../views/admin/**/*.vue');export const asyncRouterFormat = (temp: Login.Routers[]) => {return temp.map((item) => {const routes: System.AsyncRoutes = {path: item.path,meta: item.meta,redirect: '',component: Main};if (item.component) {routes.component = modules[`../views/admin/${item.component}.vue`]} else {routes.redirect = item.children?.length ? item.children[0].path : '';}if (item.children?.length) {routes.children = asyncRouterFormat(item.children)}return routes})
}

在路由拦截器里导入并在某些时刻调用这个方法:
在这里插入图片描述

在访问含有/admin/*的页面时,会先判断有没有token,有则继续访问;没有则通过await store.getUserInfo()方法来获取数据,该方法内部请求成功后会把数据赋值给store.routers。通过刚才写好的asyncRouterFormat方法处理动态路由,然后接收数据,在遍历中addRoute。vue-router4.x不能一次性动态加进去,需要遍历后调用addRoute来添加(里面有嵌套路由也会自动添加进去,所以只需要遍历一层就够了);

需要注意的是addRoute后,需要next({to, replace: true}),直接调用next()会打开空白页面或者直接跳到404。

通过以上方法,即使你刷新了页面,也不会先显示空白后再加载页面。

有需要的话我可以把代码上传到github,先这样吧。

相关内容

热门资讯

原创 宁... 据北京日报报道,12月中下旬的东亚地缘舞台格外热闹,日本首相高市早苗的一系列外交动作让外界看得眼花缭...
原创 阿... ATP针对大师赛和500赛事稳定参赛所设立的奖金,金额已可与大满贯奖金相媲美。目前的奖金榜显示,阿尔...
长春一女子打车遇“最炫出租车”... 极目新闻记者 王柳钦 近日,有网友发视频称,她和朋友在吉林长春乘坐出租车时,意外坐上了一辆改装有绚丽...
一次性信用修复政策落地,消金公... 一次性信用修复政策重磅落地,12月22日,中国人民银行发布一次性信用修复政策:明确对特定时期、特定金...
从“无”到“有”、从“有”到“... 浦东新区法律援助30周年暨《上海市法律援助若干规定》专题研讨会日前在浦东国际法律服务园举行。 本次研...
暴涨500%!19岁巴尔泰萨吉... 在意甲的舞台上,年轻球员的崛起往往令人瞩目,而19岁的巴尔泰萨吉正是近期最耀眼的新星之一。随着德转最...
完善幼儿园收费政策!三部门发文 来源 | 国家发展改革委微信,转自中国政府网微信 近日,国家发展改革委、教育部、财政部联合印发《关于...
老人“睡梦中”离世,警方靠共享... 孙大妈躺在床上 被子整整齐齐地盖在身上 就像睡着了一样 人却已经没有了呼吸 根据取款人的车辆骑行轨迹...
原创 中... 时值岁末,中航工业微信公众号中的说法,再一次引起了大家的注意。 近日,中航工业在“年末盘点”时,提...
“粤车南下”政策升级 今天起获... (央视财经《经济信息联播》)今天(23日)零时起,“粤车南下”驶入香港市区政策正式实施,广州、珠海、...