当前位置: 首页> 教育> 就业 > 哈尔滨网站建设吕新松_北京新网_如何申请网站域名流程_seo经典案例

哈尔滨网站建设吕新松_北京新网_如何申请网站域名流程_seo经典案例

时间:2025/7/12 7:48:58来源:https://blog.csdn.net/kirinlau/article/details/144506779 浏览次数:0次
哈尔滨网站建设吕新松_北京新网_如何申请网站域名流程_seo经典案例

以前vue项目中也有很多实现动态路由的方法,比如有一些项目涉及权限的可能会使用api请求路由数据在来createRouter,或者本地构建使用routes.push来动态构建路由, 今天介绍一种新的方式来基于某个文件夹批量构建动态路由的方法:
假如项目scr基础目录伪代码如下:


src
├── views
│   ├── Home.vue
│   ├── About.vue
│   └──...(其他组件.vue文件)
├── main.js
└── router└── index.js
  1. 配置router

src/router/index.js(路由配置文件,路径可根据实际情况调整)中进行如下基础配置:

import { createRouter, createWebHistory } from 'vue-router'
import.meta.glob('../views/*.vue') // 用于动态导入组件const routes = []const router = createRouter({history: createWebHistory(),routes
})export default router
  1. 动态生成路由
import { createRouter, createWebHistory } from 'vue-router'
import.meta.glob('../views/*.vue')const routes = []const addRoutesFromViewsFolder = () => {const componentModules = import.meta.glob('../views/*.vue')for (const path in componentModules) {const componentName = path.split('/').pop().replace('.vue', '')const routePath = `/${componentName.toLowerCase()}`const routeConfig = {path: routePath,name: componentName,component: componentModules[path],meta: {title: obj.componentName,needToken: obj.needToken}}routes.push(routeConfig)}
}addRoutesFromViewsFolder()const router = createRouter({history: createWebHistory(),routes
});export default router;
  1. 在 main.js 中使用路由
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';const app = createApp(App);
app.use(router);
app.mount('#app');

总结:

  1. 首先通过import.meta.glob(‘…/views/*.vue’)获取views文件夹下所有.vue组件的模块引用
  2. 然后遍历这些模块引用,分割提取出组件名称,并根据一定规则生成路由配置对象,包含path(路由路径)、name(路由名称)以及component(对应的组件)
  3. 接着将这些路由配置对象添加到routes数组中,并基于这个routes数组创建vue-router实例
  4. 这样,Vue 3 应用就可以根据views文件夹下的组件动态生成路由了,当添加新的组件到views文件夹时,只要符合上述扫描规则,就会自动被添加到路由配置中,无需手动逐个去配置路由,也无须知道别人添加了什么路由

注意:

  1. 代码中的路径等都是基于常见的项目结构示例,实际项目中你可能需要根据真实的文件夹结构和组件命名等情况来调整相关代码,比如import.meta.glob中的路径部分。
  2. 另外菜单渲染遍历使用的是meta最好能写个映射表,这样就可以和当前的routes对象自动对应
  3. 还有就是对于更复杂的路由需求,比如路由嵌套、路由参数传递等,还需要进一步在路由配置和组件中进行相应的扩展和实现。

备注:vue3中引入了import.meta.的概念可以有很多的用法比如环境变量、当前url、当前组件等

关键字:哈尔滨网站建设吕新松_北京新网_如何申请网站域名流程_seo经典案例

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: