Vue3+vite路由配置优化(自动化导入)
今天在维护优化公司中台项目时,发现路由的文件配置非常多非常乱,只要只中大型项目,都会进入很多的路由页面,规范一点的公司还会吧路由进行模块化导入,但是依然存在很多文件夹的和手动导入的问题。
于是我想到了我之前使用vuex时进行的模块化自动导入js文件,能不能使用到自动导入.vue文件中去,答案是可以!
只需要 15行代码就优化 300行路由配置并且在也不用去后期手动添加路由配置!解放之鼓啊,废话不多说直接上核心代码。
注意:如果你view下面有组件,那么你需要给组件的文件命名:components/组件.vue,不限制层级你可以在view下任意地方创建components开发你的私有组件
1.核心代码
// 自动路由配置(自动导入views文件下所有的文件内的.vue文件进行注册到路由,除了文件名叫components下的vue文件不会被注册进行路由,默认这是一个组件文件夹)
const routeFiles = import.meta.glob('../views/**/*.vue'); // 获取所有views文件下的.vue文件
const routesList = [] // 储存符合路由页面的对象内容
// 会有一些页面不需要自动注册,需要我们手动添加的就在这里上路径
const notRead = ['../views/index.vue','../views/login.vue','../views/index-data.vue','../views/notFound.vue.vue'];
Object.keys(routeFiles).forEach(key => {
if (key.indexOf('components') === -1 && notRead.indexOf(key) === -1) {// 排除组件 和 不需要自动注册的路由
const name = key.match(/\.\/(.+)\.vue$/)[1];
const component = routeFiles[key];
routesList.push({
path: `/${name.toLowerCase()}`,
component: component.default || component,
name: name
});
}
});
2.完整代码
import { createRouter, createWebHashHistory } from 'vue-router';
import storage from '@/utils/sessionStore.js';
import { defineAsyncComponent, h } from 'vue' // 自动路由配置(自动导入views文件下所有的文件内的.vue文件进行注册到路由,除了文件名叫components下的vue文件不会被注册进行路由,默认这是一个组件文件夹)
const routeFiles = import.meta.glob('../views/**/*.vue'); // 获取所有views文件下的.vue文件
const routesList = [] // 储存符合路由页面的对象内容
// 会有一些页面不需要自动注册,需要我们手动添加的就在这里上路径
const notRead = ['../views/index.vue','../views/login.vue','../views/index-data.vue','../views/notFound.vue.vue'];
Object.keys(routeFiles).forEach(key => {
if (key.indexOf('components') === -1 && notRead.indexOf(key) === -1) {// 排除组件 和 不需要自动注册的路由
const name = key.match(/\.\/(.+)\.vue$/)[1];
const component = routeFiles[key];
routesList.push({
path: `/${name.toLowerCase()}`,
component: component.default || component,
name: name
});
}
}); const routes = [
{
path: '/',
name: 'login',
component: () => import('@/views/login.vue')
},
{
path: '/index',
name: 'index',
component: () => import('@/views/index.vue'),
children: [
{
path: '/index-data',
name: 'index-data',
component: () => import('@/views/index-data.vue'),
},
...routesList // 自动配置在这个路由下(可以根据自己的需求进行调整)
]
},
{
path: '/404',
name: '404',
component: () => import('@/views/notFound.vue')
},
];
const router = createRouter({
history: createWebHashHistory(),
routes
});
router.beforeEach((to, from, next) => {
next()
}); export default router
3.路由地址说明
直接通过文件夹路径层级来写访问路由即可 列如:
/views/device/grouping
/views/device/list
/views/device/index/appList
后期直接创建文件夹与vue文件即可 不需要再去维护路由配置文件
完!
Vue3+vite路由配置优化(自动化导入)的更多相关文章
- Vue3+vite+Echarts案例大屏可视化--千峰(推荐)
https://www.bilibili.com/video/BV14u411D7qK?p=33&spm_id_from=pageDriver&vd_source=e2cfe74d93 ...
- Django基础--Django基本命令、路由配置系统(URLconf)、编写视图、Template、数据库与ORM
web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构. 使用框架可以帮你快速开发特定的系统. 简单地说,就是你用别人搭建好的舞台来做表演. 尝试搭建一个简单 ...
- PHPSTORM/IntelliJ IDEA 常用 设置配置优化
PHPSTORM/IntelliJ IDEA 常用 设置配置优化 - meetrice 时间 2014-09-06 10:17:00 博客园-所有随笔区 原文 http://www.cnblogs ...
- CCNA网络工程师学习进程(7)路由器的路由配置
前面一节已经介绍了路由器的端口配置,接着我们介绍路由器的路由配置:静态路由.默认路由和浮动路由的配置:动态路由协议的配置,包括RIP.IGRP.EIGRP和OSPF. (1)路由器的基 ...
- Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】
转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创 2017-08-26 翟永超 Spring Cloud 被围观 ...
- urls.py的配置[路由配置]
urls.py的配置[路由配置] Get请求与Post请求的方式 get请求: (1)地址栏输入url (2)<a href="请求url">点击</a> ...
- nginx配置优化 第二章
一:常用功能优化: 1:网络连接的优化: 只能在events模块设置,用于防止在同一一个时刻只有一个请求的情况下,出现多个睡眠进程会被唤醒但只能有一个进程可获得请求的尴尬,如果不优化,在多进程的ngi ...
- 使用create-react-app 快速构建 React 开发环境以及react-router 4.x路由配置
create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. create-react-app 自动创建的项目是基于 Webpack + E ...
- Django学习手册 - 正则URL路由配置/路由分发
############################################### 总结: 一.url路由配置: 方式一:(通过url链接get获取) 方式二:(url路由匹配方式获取-拓 ...
- mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化
可以从这些方面进行优化: 数据库(表)设计合理 SQL语句优化 数据库配置优化 系统层.硬件层优化 数据库设计 关系数据库三范式 1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非 ...
随机推荐
- 如何基于G6进行双树流转绘制?
1. 背景 业务背景:CRM系统随着各业务条线对线索精细化分配的诉求逐渐增加,各个条线的流向规则会越来越复杂,各个条线甚至整个CRM的线索流转规则急需一种树形的可视化的图来表达. 技术背景:在开发之前 ...
- 腾讯云 cloudbase 云开发使用笔记
产品概述 云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为开发者提供高可用.自动弹性扩缩的后端云服务,包含计算.存储.托管等 serverless ...
- 2023-06-09:什么是Redis事务?原理是什么?
2023-06-09:什么是Redis事务?原理是什么? 答案2023-06-09: Redis中的事务是以一组命令的形式出现的,这些命令被认为是最小的执行单位.事务可以保证在一个单独独立的隔离操作中 ...
- 浅聊一下 C#程序的 内存映射文件 玩法
一:背景 1. 讲故事 前段时间训练营里有朋友问 内存映射文件 是怎么玩的?说实话这东西理论我相信很多朋友都知道,就是将文件映射到进程的虚拟地址,说起来很容易,那如何让大家眼见为实呢?可能会难倒很多人 ...
- go语言编写算法
1.冒泡排序 // 冒泡排序 a := []uint8{9, 20, 10, 23, 7, 22, 88, 102} for i := 0; i < len(a); i++ { for k := ...
- 在线免费chatgpt网页版-支持gpt4
为了吸引更多的用户体验最先进的自然语言处理技术,我们推出了在线免费ChatGPT.这是一个基于OpenAI训练的大型语言模型,它可以提供智能响应.自然对话和语音识别等功能.不仅如此,我们还提供了完全免 ...
- Spring 中的 Bean
前言 欢迎来到本篇文章,鸽了好久了,今天继续写下 Spring 的内容:Spring 中 Bean 的基本概念.基本写法和 3 种实例化 Bean 的方式等. 什么是 Bean? 我们回顾下,什么是 ...
- Python编程和数据科学中的人工智能:如何创建复杂的智能系统并提高模型性能
目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 标题:<Python编程和数据科学中的人工智能:如何创建复杂的智能系统并提高模型性能> 1. 引 ...
- 大数据实战手册-开发篇之spark实战案例:实时日志分析
2.6 spark实战案例:实时日志分析 2.6.1 交互流程图 2.6.2 客户端监听器(java) @SuppressWarnings("static-access") pri ...
- UnrecognizedPropertyException: Unrecognized field 解决
转载请注明出处: 在项目得不同环境上对接外部的服务接口,且存在不同版本间可能有字段不同得问题,遇到这种问题在使用jackson解析时,如果格式化得字符串与定义得java类不能完全对应时,就会报错:Un ...