vite Glob 导入文件和addRoute动态创建相应路由

想要将某个目录下的文件内容全部导出,并且为每一个文件添加相应的路由。

在hooks中创建动态导入文件的函数

// hooks/useDynamicImport.ts
export async function useDynamicImportMarkdown() {
    const studyArrString: Array<string> = []
    const modules = import.meta.glob('../../../blog_server/src/app/static/*.md', { as: 'raw' }); //文件的路径
    for (const path in modules) {
        await modules[path]().then((mod) => {
            studyArrString.push(mod)
        })
    }
    return studyArrString
}

在组件中创建相应的路由

//Nav.vue
//引入hooks
import {useDynamicImportMarkdown} from '@/hooks/useDynamicImport'
let studyArrString = await useDynamicImportMarkdown()
//getterStudy为相应文件的名字数组
getterStudy.value.forEach((item, index) => {
  router.addRoute({
    name: item.study_name,
    path: `/${item.study_name}`,
    props: { content: studyArrString[index] }, //传入相应的文件内容
    component: () => import('@/views/Study/index.vue') //要展示相应内容的组件
  })
})

由于使用的Nav组件是异步组件,所有在其他地方引入时候可以使用Suspense内置组件

<Suspense>
       <Nav />
       <template #fallback>
        Loading...
       </template>
</Suspense>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值