LoadView调用顺序

由于博客内容为空,暂无法提供包含关键信息的摘要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


const modules = import.meta.glob("./../../views/**/*.vue"); const usePermissionStore = defineStore("permission", () => { // 状态定义 const routes = ref([]) const addRoutes = ref([]) const defaultRoutes = ref([]) const topbarRouters = ref([]) const sidebarRouters = ref([]) // 工具函数 const filterChildren = (childrenMap, lastRouter = false) => { return childrenMap.flatMap(el => { el.path = lastRouter ? `${lastRouter.path}/${el.path}` : el.path return el.children?.length && el.component === "ParentView" ? filterChildren(el.children, el) : el }) } const loadView = (view) => { const modulePath = Object.keys(modules).find(path => { const dir = path.split("views/")[1].split(".vue")[0] return dir === view }) return modulePath ? () => modules[modulePath]() : null } const filterAsyncRouter = (asyncRouterMap, lastRouter = false, type = false) => { return asyncRouterMap.filter(route => { if (type && route.children) { route.children = filterChildren(route.children) } if (route.component) { route.component = { Layout, ParentView, InnerLink }[route.component] || (loadView(route.component) || notRouterComp) } if (route.children?.length) { route.children = filterAsyncRouter(route.children, route, type) } else { delete route.children delete route.redirect } return true }) } const filterDynamicRoutes = (routes) => { return routes.filter(route => (route.permissions && auth.hasPermiOr(route.permissions)) || (route.roles && auth.hasRoleOr(route.roles)) || (!route.permissions && !route.roles) ) } // 操作方法 const setRoutes = (newRoutes) => { addRoutes.value = newRoutes routes.value = [...constantRoutes, ...newRoutes] } const setDefaultRoutes = (newRoutes) => { defaultRoutes.value = [...constantRoutes, ...newRoutes] } const setTopbarRoutes = (newRoutes) => { topbarRouters.value = newRoutes } const setSidebarRouters = (newRoutes) => { sidebarRouters.value = newRoutes } // 核心方法 const generateRoutes = async () => { try { const res = await getRouters() const cloneData = data => JSON.parse(JSON.stringify(data)) const sdata = cloneData(res.data) const rdata = cloneData(res.data) const defaultData = cloneData(res.data) const sidebarRoutes = filterAsyncRouter(sdata) const rewriteRoutes = filterAsyncRouter(rdata, false, true) const defaultRoutes = filterAsyncRouter(defaultData) filterDynamicRoutes(dynamicRoutes).forEach(route => router.addRoute(route)) setRoutes(rewriteRoutes) setSidebarRouters([...constantRoutes, ...sidebarRoutes]) setDefaultRoutes(sidebarRoutes) setTopbarRoutes(defaultRoutes) return rewriteRoutes } catch (error) { console.error("路由生成失败:", error) return [] } } return { routes, addRoutes, defaultRoutes, topbarRouters, sidebarRouters, generateRoutes } }) 你会怎么写 会怎么让代码更简单 性能更好 别用ts
最新发布
03-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值