从零开始学Vue3--根据目录结构自动生成路由

我们在测试或者小项目中经常遇到一个问题,就是加一个页面,就要在router.js中加一个路由,相当的麻烦,有没有办法可以根据目录结构自动生成路由呢?

想要自动生成路由,最重要的是能够获取指定目录下vue的路径,幸运的是通过vite的import.meta.glob可以获取到,webpack可以通过require.context获取文件名,参考文章:vue3 vite中require.context报错_vite require.context-CSDN博客

1.获取文件路径

javascript 复制代码
const requireComponent = import.meta.glob('@/views/**/*.vue', {eager: false})
for (let key in requireComponent) {
    console.log(key)
}

打印结果

结果很完美,我只要根据这个路径加入到 动态路由就行了,实现类似以下的效果就行了

javascript 复制代码
router.addRoute({
        path: '/basic/AttrBind',
        component: () => import('/src/views/basic/AttrBind')
    })

2.完整路由代码

javascript 复制代码
import {createRouter, createWebHistory} from 'vue-router'
import HomeView from '../views/HomeView.vue'
// 获取views下面所有vue文件
const requireComponent = import.meta.glob('@/views/**/*.vue', {eager: false})
const router = createRouter({
    history: createWebHistory(import.meta.env.BASE_URL),
    routes: [
        {
            path: '/',
            name: 'home',
            component: HomeView
        }
    ]
})
// 通过vue文件路径动态添加路由
for (let key in requireComponent) {
    let path = key.replace(/^\/src\/views/, '').replace(/\.vue$/, '');
    router.addRoute({
        path,
        component: () => import(/* @vite-ignore */key)
    })
}

export default router
相关推荐
像我这样帅的人丶你还15 分钟前
从交稿到甩锅预防:AI 前端流水线
前端·ai编程
想想弹幕会怎么做16 分钟前
如何构建一颗可交互的ui树?
前端
程序员陆业聪21 分钟前
我见过的最反直觉的 Android 架构问题:UseCase 越多,项目越烂
前端
Arya_aa28 分钟前
网络:前端向后端发送网络请求渲染在页面上,将EasyMock中的信息用前端vue框架编写代码,最终展示在浏览器
前端·vue.js
LlNingyu29 分钟前
文艺复兴,什么是CSRF,常见形式(一)
前端·安全·web安全·csrf
晓131331 分钟前
React篇——第三章 状态管理之 Redux 篇
前端·javascript·react.js
子兮曰36 分钟前
🚀24k Star 的 Pretext 为何突然爆火:它不是排版库,而是在重写 Web 文本测量
前端·javascript·github
@大迁世界40 分钟前
11.在 React.js 中,state 与 props 的差异体现在哪里?
前端·javascript·react.js·前端框架·ecmascript
Giant10042 分钟前
🔥前端跨域封神解法:Vite Proxy + Express CORS,一篇搞定所有跨域坑!
前端·javascript·面试
用户3167361303421 小时前
SSE消息推送前后端代码
前端·后端