当前位置: 首页 > news >正文

Vue3动态导入后端路由

  1. 动态获取文件
// modules就是一个map,文件路径作为key,文件对象作为value
const modules=import.meta.glob('../views/**/*.vue')

在这里插入图片描述

获取到的modules对象如下:

在这里插入图片描述

  1. 添加动态路由
import {createRouter, createWebHashHistory} from 'vue-router'const modules = import.meta.glob('../views/**/*.vue')const constantRoutes = [{path: '/login',name: 'login',meta: {title: '登录',hidden: true},component: () => import('../views/login/index.vue')},
]const router = createRouter({history: createWebHashHistory(),routes:[…constantRoutes]
})// 从后端动态获取的路由列表,[hidden:是否在侧边栏显示]
let dynamicRoutes = [{path: '/',name: 'Layout',redirect: '/home',component: '/views/layout/index',meta: {title: 'Layout',icon: 'HomeFilled',hidden: false},children: [{path: '/home',name: 'Home',component: '/views/home/index',meta: {title: '首页',icon: 'HomeFilled',hidden: false}},]},{path: '/sys',name: 'Sys',component: '/views/layout/index',meta: {title: '系统管理',icon: 'document',hidden: false},children: [{path: '/sys/user',name: 'User',component: '/views/sys/user/index',meta: {title: '用户管理',icon: 'document',hidden: false}},{path: '/sys/role',name: 'Role',component: '/views/sys/role/index',meta: {title: '角色管理',icon: 'document',hidden: false}},]}
]convertPathToComponent(dynamicRoutes)
addDynamicRoutes(dynamicRoutes)// 添加动态路由
function addDynamicRoutes(dynamicRoutes) {dynamicRoutes.forEach(item => {router.addRoute(item)})
}// 使用递归将routeList中每个对象及其子对象中的component路径转换为组件(在component不为空的情况下)
function convertPathToComponent(dynamicRoutes) {dynamicRoutes.forEach(item => {if (item.component) {item.component = modules['..' + item.component + '.vue'] || modules['../views/404/index.vue']}if (item.children) {convertPathToComponent(item.children)}})
}export default router

相关文章:

  • EasyExcel全面实战:掌握多样化的Excel导出能力
  • 华为OD真题机试-英文输入法(Java)
  • 滚雪球学MySQL[8.1讲]:MySQL扩展功能
  • centos7.9使用docker容器方式部署jenkins环境
  • HanLP词性标注集
  • 初识ZYNQ——FPGA学习笔记15
  • Spring Boot 实现动态配置导出,同时支持公式和动态下拉框渲染和性能优化案例示范
  • 一起发现CMake太美-02-CMake是什么CMake的运行原理
  • Docker官网新手入门教程:从零开始玩转容器
  • dea插件开发-自定义语言9-Rename Refactoring
  • SpringBoot实战:构建学科竞赛管理系统
  • 【unity进阶知识1】最详细的单例模式的设计和应用,继承和不继承MonoBehaviour的单例模式,及泛型单例基类的编写
  • 基于Hive和Hadoop的招聘分析系统
  • RestSharp简介
  • vue2 配置router
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • Java方法详解
  • Mac转Windows的拯救指南
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 浅谈web中前端模板引擎的使用
  • 区块链将重新定义世界
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 无服务器化是企业 IT 架构的未来吗?
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 赢得Docker挑战最佳实践
  • 与 ConTeXt MkIV 官方文档的接驳
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #70结构体案例1(导师,学生,成绩)
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #stm32整理(一)flash读写
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (层次遍历)104. 二叉树的最大深度
  • (二)linux使用docker容器运行mysql
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (六)Flink 窗口计算
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • .net core 连接数据库,通过数据库生成Modell
  • .net core使用ef 6
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET MVC第五章、模型绑定获取表单数据
  • .net 调用php,php 调用.net com组件 --
  • .NET 反射 Reflect
  • .Net 基于MiniExcel的导入功能接口示例
  • .net解析传过来的xml_DOM4J解析XML文件
  • @Documented注解的作用
  • @GetMapping和@RequestMapping的区别