vite脚手架,手写实现配置动态生成路由

参考文档 vite的glob-import

  • vue路由配置基本都是重复的代码,每次都写一遍挺难受,加个页面就带配置下路由
    那就利用 vite 的 文件系统处理啊

先看实现效果

请添加图片描述

1. 考虑怎么约定路由,即一个文件夹下,又有组件,又有页面,怎么区分它们,这就需要提前约定好

如下:约定 以 index.vue 结尾的就是路由,其它都认为是组件, 目录结构如下, 这里我放入 views目录下

├─src
	├─views	
		├─about
			├─index.vue  # 认为是页面
			├─page.ts    # 对这个页面的配置,例如meta中的信息		
		├─home
			├─index.vue
			├─page.ts
		├─mine
			├─index.vue
			├─page.ts
		└─other
		    ├─info
			    ├─index.vue
				├─page.ts
		    └─pick
			    ├─index.vue
				├─page.ts
		    ├─index.vue
			├─page.ts
  • page.ts [ 约定为 配置文件,主要赋值给 meta 属性,它默认导出一个对象]
export default {
	title: "关于",
	name: "xxx",
	auth: true
}

2 找到views 目录下,带 page.ts 的文件,它就是你要的页面

// 获取每个页面的配置参数 [后边传参啥意思,顶部点击glob的文档]
const configPage = import.meta.glob('../views/**/page.ts', {
  import: 'default',
  eager: true,
})

3 再找到以index.vue 结尾的文件,这是路由要渲染的组件

// 获取views文件夹下所有.vue文件,最终组成想要的路由
const vuePage = import.meta.glob('../views/**/index.vue')
// 这个打印出来是个这种格式
// {
//   ../views/home/index.vue : () => import("/src/views/home/index.vue")
// }

注: ** 的意思是为了获取所有文件,顶部点文档查看

4 接着就是组装每个路由了

export const routes = Object.entries(configPage).map(
  ([tsPath, config]: any) => {
    let path = tsPath.replace('../views', '').replace('/page.ts', '') || '/'
    let name = path.split('/').filter(Boolean).join('')
    // 通过这个key 再 vuePage 变量中获取对应的路径
    let pageKey = tsPath.replace('page.ts', 'index.vue')
    // 返回单个路由文件配置
    return {
      path,
      name,
      meta: config,
      component: vuePage[pageKey],
    }
  }
)

最后导出路由 ,这里放了layout

const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      component: () => import('./../layout/index.vue'),
      children: [...routes],
    },
  ],
})
export default router

请添加图片描述

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ViteVue 3 中配置动态路由非常简单。下面是一些基本步骤来配置动态路由: 1. 首先,确保你已经安装了 Vue Router。你可以使用以下命令安装它: ```bash npm install vue-router@4 ``` 2. 在项目的根目录下创建一个名为 `router` 的文件夹,并在其中创建一个 `index.js` 文件。这将是我们的路由配置文件。 3. 在 `index.js` 文件中,首先导入 VueVue Router: ```javascript import { createRouter, createWebHistory } from 'vue-router'; import { createApp } from 'vue'; ``` 4. 然后创建一个新的路由实例,并定义你的路由配置。你可以使用 `createWebHistory` 创建一个 HTML5 历史模式的路由,也可以使用 `createWebHashHistory` 创建一个带有哈希模式的路由。 ```javascript const router = createRouter({ history: createWebHistory(), routes: [ // 定义你的路由配置 ], }); ``` 5. 接下来,你可以在 `routes` 数组中定义你的动态路由。每个路由对象都应该具有一个 `path` 属性和一个 `component` 属性,用于指定该路由所对应的路径和组件。 ```javascript const routes = [ { path: '/', component: YourComponent, }, { path: '/users/:id', component: UserComponent, }, ]; ``` 在上面的例子中,我们定义了两个路由:一个根路径的路由和一个带有动态参数的路由。 6. 最后,在你的应用程序入口文件中,使用 `use` 方法将路由实例添加到应用程序中: ```javascript const app = createApp(App); app.use(router); app.mount('#app'); ``` 这样,你就完成了动态路由配置。现在,你可以在你的组件中使用 `<router-link>` 和 `<router-view>` 标签来处理路由导航和渲染组件。 希望以上步骤对你有所帮助!如果有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值