vue3+ts+vite搭建脚手架(一)根据菜单自动生成路由

news2024/11/25 0:45:05

自动生成路由

基础环境

vue 3.4
ts 5.5
vite 5.4

自动生成路由

只有一个基础的路由页面,根据菜单自动生成路由,不适用于所有的项目,可自行玩玩

1.文件目录结构
└── src/
    ├── assets/                    
    ├── layouts/        
    	├── admin.vue       // admin 一级路由    
    	├── member.vue      // member 一级路由     
    ├── router/                 
    │   ├── aotoload.ts     //自动生成路由函数
    │   └── index.ts        //路由基础文件   
    ├── store/                    
    ├── utils/                     
    ├── views/   
        ├── admin/
            ├── role.vue     //admin 二级路由
            ├── user.vue     //admin 二级路由
        └──  member/   
        	├──  aaa.vue     //member 二级路由        
    ├── App.vue
    └── main.ts
├── index.html
├── tsconfig.json                 
├── vite.config.ts                 
└── package.json

2./src/router/index.ts
import { App } from 'vue';
import { createRouter, createWebHashHistory } from 'vue-router';
import layoutRouters from './autoload';

const routers = createRouter({
	history: createWebHashHistory(),
	routes: [ ...layoutRouters]
});
export function setupRouter(app: App) {
	app.use(routers);
}
3./src/router/aotoload.ts
import { RouteRecordRaw } from 'vue-router';

type G = { [key: string]: any };
const layouts = import.meta.glob<G>('../layouts/*.vue');
const views = import.meta.glob<G>('../views/**/*.vue');

function getRouters() {
	const layoutRouters = [] as RouteRecordRaw[];
	Object.entries(layouts).forEach(([file, module]) => {
		const route = getRouterByModule(file, module);
		route.children = getChildrenRouterByModule(route);
		layoutRouters.push(route);
	});
	return layoutRouters;
}
function getRouterByModule(file: string, module: G) {
	const name = file.replace(/.+layouts\/|.+views\/|\.vue/gi, '');
	const router = {
		name: name.replace('/', '.'),
		path: '/' + name,
		component: module
	} as RouteRecordRaw;
	return router;
}
function getChildrenRouterByModule(layoutRouter: RouteRecordRaw) {
	const route = [] as RouteRecordRaw[];
	Object.entries(views).forEach(([file, module]) => {
		if (file.includes(`../views/${layoutRouter.name as string}`)) {
			const router = getRouterByModule(file, module);
			route.push(router);
		}
	});
	return route;
}
export default getRouters();
4.一级路由
/src/layouts/admin.vue
<template>
	<div>admin <RouterView></RouterView></div>
</template>
 /src/layouts/member.vue
<template>
	<div>admin <RouterView></RouterView></div>
</template>
4.效果

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2123646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS学习(十)——网络编程

文章目录 1、通过HTTP请求网络2、Web组件2.1、加载本地网页2.2、加载在线网页2.3、网页缩放2.4、文本缩放2.5、web组件事件以及状态说明2.6、处理页面导航 1、通过HTTP请求网络 官方API文档地址&#xff1a;HTTP数据请求-Network Kit数据传输能力-Network Kit&#xff08;网络…

分类预测|基于雪消融优化BP神经网络的数据分类预测Matlab程序SAO-BP 多特征输入多类别输出 含基础程序

分类预测|基于雪消融优化BP神经网络的数据分类预测Matlab程序SAO-BP 多特征输入多类别输出 含基础程序 文章目录 一、基本原理二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 SAO-BP模型结合了雪消融优化算法&#xff08;SAO&#xff09;和BP神经网络。以下是详细…

架空输电线路故障监测:可视精灵的导线全方位监测之道

集高科技与智能化于一身的“架空输电线路故障可视精灵”&#xff0c;以精准、高效、全面的监测能力&#xff0c;成为守护输电线路安全的得力助手&#xff0c;接下来&#xff0c;深圳鼎信智慧带您走近它&#xff1a; 技术概述 物联网&#xff08;IoT&#xff09;&#xff1a;通…

神卓互联NAS助手SPK套件安装与使用指南

目录 一、SPK套件简介 二、安装前准备 三、安装步骤 1. 下载SPK套件 2. 安装SPK套件 3. 登录套件 四、使用指南 1. 创建访问映射规则 2. 外网访问 一、SPK套件简介 神卓互联NAS助手SPK套件&#xff0c;是专为群晖NAS设备设计的一款软件扩展包。采用先进的WanGooeTunn…

SpringBoot2:请求处理原理分析-接口参数解析原理(argumentResolvers)

一、知识回顾 我们知道&#xff0c;接口的参数&#xff0c;一般都要配上注解来一起使用。 不同的参数注解&#xff0c;决定了传参的方式不同。 为什么会这样&#xff1f; 如果让你设计接口参数解析&#xff0c;你会怎么做&#xff1f; 首先&#xff0c;我们知道方法参数是形…

双指针(8)_单调性_四数之和

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 双指针(8)_单调性_四数之和 收录于专栏【经典算法练习】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 题目…

QDY421F-16P-25液氨不锈钢液动紧急切断阀

一、产品概述 QDY421F-16P-25液氨不锈钢液动紧急切断阀&#xff0c;采用先进的液动驱动技术&#xff0c;结合高质量的不锈钢材质&#xff0c;专为满足液氨等腐蚀性介质的紧急切断需求而设计。该阀门的工作压力可达16MPa&#xff0c;适用于DN25&#xff08;即25毫米&#xff09;…

单向链表概述

文章目录 &#x1f34a;自我介绍&#x1f34a;单向链表概述数据域和指针域数据类型设计 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我介绍 Hello,大家好&#xff0c;我是小珑也要…

高斯消元法

顾名思义就是我们初中所知的消元方程&#xff0c;用来解方程的&#xff0c;但是如果自己手动去实现的话&#xff0c;还是有一部分难度的&#xff0c;因此我们也会用到线代这门科目&#xff0c;因为这是实现计算自动化的关键步骤 现在这里放上高斯消元的板子&#xff08;可以用…

正点原子阿尔法ARM开发板-IMX6ULL(四)——汇编LED驱动实验-下

文章目录 一、驱动编写1.1 配置GPIO的电气属性1.2 配置GPIO的功能&#xff08;GDIR寄存器&#xff09;1.3 设置输出&#xff08;DR寄存器&#xff09;1.4 最终代码 二、编译程序2.1 编译程序2.2 链接文件2.3 格式转换成BIN文件2.4 反汇编 三、烧写bin到SD卡中并运行3.1 准备工作…

中介者模式mediator

学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/mediator 减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。

数据结构:树与二叉树(2)

1、线索二叉树 1.1线索二叉树的定义 &#xff08;1&#xff09;线索二叉树有啥用&#xff1f; 普通二叉树的节点包含左孩子和右孩子的信息&#xff0c;但并没有直接存储关于“直接前驱”和“直接后继”的信息&#xff0c;结点的前驱和后继只能在遍历过程中获得。 因此这里引…

Springboot中mybatis的使用

一.创建Springboot项目并加载依赖 1.利用IDEA创建SpringBoot项目&#xff0c;并勾选必须依赖&#xff0c;步骤如下&#xff08;IDEA版本为2024版&#xff09; 注意&#xff1a; 1.首先更换镜像源&#xff0c;否则加载配置环境比较慢&#xff0c;网上搜阿里的镜像源就行。 2…

关于在vue2中使用el-tree的记录

此文章会持续更新在使用el-tree过程中应用到的功能... 先看此效果&#xff1a; html&#xff1a; <el-tree :data"data" :props"defaultProps" node-click"handleNodeClick">//自定义节点内容<span slot-scope"{ data }"&g…

Leetcode面试经典150题-135.分发糖果

解法都在代码里&#xff0c;不懂就留言或者私信 阿里字节都考过 class Solution {/**对于每个孩子来说&#xff0c;我们试一下从左边开始它应该分几个糖果&#xff0c;然后看一下从右边开始它应该分几个糖果然后左右取最大值&#xff0c;每个位置求和就是我们要的答案 */publ…

【解决keil不能跳转函数声明的问题】

第一步&#xff1a;将魔术棒中的output选项里Browase Information功能打开 第二步&#xff1a;重新编译整个工程 第三步&#xff1a;跳转测试

Java项目: 基于SpringBoot+mybatis+maven实现的IT技术交流和分享平台(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven实现的IT技术交流和分享平台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美…

【笔记】2.1 石英类原料

2.1.1 石英类原料的种类 石英&#xff1a;结晶矿物。 &#xff08;1&#xff09;石英砂&#xff08;硅砂&#xff09; 石英石、长石在水、二氧化碳、温度作用下风化分解由水流冲击沉积而形成。 主要成分为&#xff0c;质地纯净的硅砂为白色&#xff0c;其中若含有少量杂质&…

SpringCloud集成MybatisPlus,实现MySQL多数据源配置

引入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version> </dependency><dependency><groupId>com.alibaba</groupId><art…

Apache DataFusion查询引擎简介

01 简介 DataFusion是一个查询引擎&#xff0c;其本身不具备存储数据的能力。正因为不依赖底层存储的格式&#xff0c;使其成为了一个灵活可扩展的查询引擎。它原生支持了查询CSV&#xff0c;Parquet&#xff0c;Avro&#xff0c;Json等存储格式&#xff0c;也支持了本地&#…