从零开始学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
相关推荐
轻口味11 分钟前
【每日学点鸿蒙知识】AVCodec、SmartPerf工具、web组件加载、监听键盘的显示隐藏、Asset Store Kit
前端·华为·harmonyos
alikami14 分钟前
【若依】用 post 请求传 json 格式的数据下载文件
前端·javascript·json
wakangda1 小时前
React Native 集成原生Android功能
javascript·react native·react.js
吃杠碰小鸡1 小时前
lodash常用函数
前端·javascript
emoji1111111 小时前
前端对页面数据进行缓存
开发语言·前端·javascript
泰伦闲鱼1 小时前
nestjs:GET REQUEST 缓存问题
服务器·前端·缓存·node.js·nestjs
m0_748250031 小时前
Web 第一次作业 初探html 使用VSCode工具开发
前端·html
一个处女座的程序猿O(∩_∩)O1 小时前
vue3 如何使用 mounted
前端·javascript·vue.js
m0_748235951 小时前
web复习(三)
前端
迷糊的『迷』1 小时前
vue-axios+springboot实现文件流下载
vue.js·spring boot