v3 - ts 动态路由

vite import模块
let Module = import.meta.glob(“@/views/**/*.vue”);
//懒加载组件
function loadComponent(url: string) {
let path = Module[/src/views/${url}/index.vue];
return path;
}
export function dynamicRouter(routers: RouteRecordRawNew[]): RouteRecordRawNew[] {
const list: RouteRecordRawNew[] = []
routers.forEach((itemRouter, index) => {
// 从本地找组件

    list.push({
        ...itemRouter,
        component: loadComponent(itemRouter.component) //没找到则用默认框架组件
    })
    // 是否存在子集
    if (itemRouter.children && itemRouter.children.length) {
        list[index].children = dynamicRouter(itemRouter.children);
    }
})

return list

}

// 防止首次或者刷新界面路由失效
let registerRouteFresh = true
router.beforeEach((to, from, next) => {
if (registerRouteFresh) {
// addRoute允许带children添加,所以循环第一层即可
dynamicRouter(routesList).forEach((itemRouter) => {
router.addRoute(itemRouter as RouteRecordRaw)
})
next({ …to, replace: true })
registerRouteFresh = false
} else {
next()
}
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue3和TypeScript中实现动态路由的方法如下: 首先,需要在服务端返回完整的路由表数据。可以通过解析路由数据,将其动态添加到路由表中。这可以通过使用Vue Router的addRoute方法来实现。\[2\] 在前端,可以先配置好基础的通用路由,例如登录页和首页。然后,在router.beforeEach中进行路由守卫的处理。在这个处理过程中,可以判断用户的权限信息,以及从登录页跳转到首页时是否需要重新加载路由数据。\[2\] 具体的实现步骤如下: 1. 在前端的路由配置中,先配置好基础的通用路由,例如登录页和首页。 2. 在服务端获取完整的路由表数据后,将其解析为路由对象数组。 3. 使用Vue Router的addRoute方法,将解析后的路由对象数组动态添加到路由表中。\[3\] 4. 在router.beforeEach中进行路由守卫的处理。可以根据用户的权限信息,判断是否需要展示某些路由,并防止通过地址栏输入方式跳转到未授权的路由。 5. 在路由守卫中,可以根据具体的情况判断是否需要重新加载路由数据。例如,从登录页进入首页时,可以判断是否需要重新加载路由数据。\[2\] 6. 最后,需要添加一个404页面,以处理找不到页面的情况。可以使用Vue Router的addRoute方法,将404页面添加到路由表中。\[3\] 总结起来,实现动态路由的关键步骤包括配置基础通用路由、解析路由数据、动态添加路由、处理路由守卫和添加404页面。通过这些步骤,可以实现在Vue3和TypeScript中的动态路由功能。 #### 引用[.reference_title] - *1* *2* *3* [vue3 + ts +pinia+element-plus+mock 项目---动态路由+用户权限路由篇](https://blog.csdn.net/hzz1998/article/details/128129668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值