vite项目动态路由

动态路由

最近比较闲,研究一下用vite开发项目,然后就想到使用动态路由,一切都很顺利,结果在生成路由的时候导入文件出了问题,真离谱,请教了一下度娘才知道是什么问题,先看一下已经写好的代码

代码

import { createRouter, createWebHashHistory } from "vue-router";
import { routerData } from "@/mock/routerData";//导入的mock文件,里面是配置路由的
let modules = import.meta.glob("../views/**/*.vue");
console.log(modules);

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: "/",
      redirect: { path: "/home" },
    },
    {
      path: "/home",
      name: "门户主页",
      component: () => import(`@/views/home.vue`),
    },
  ],
});
createRouterList(routerData);//添加路由的回调
localStorage.setItem("routerData", JSON.stringify(routerData));
router.beforeEach(async (to, from, next) => {
  next();
});
function createRouterList(arr: any): void {
  arr.forEach((item: any) => {
    if (item.component != "Layout") {
    //router4.x后需要用addRoute添加路由
      router.addRoute({
        path: item.path,
        name: item.name,
        component: modules[`../views/${item.component}.vue`],
      });
    }
    if (item.children && item.children.length) {
      createRouterList(item.children);
    }
  });
}
export default router;

如果用之前的方法写的话就会出现找不到这个文件的问题

function createRouterList(arr: any): void {
  arr.forEach((item: any) => {
    if (item.component != "Layout") {
      router.addRoute({
        path: item.path,
        name: item.name,
        component: import(`../views/${item.component}.vue`),//这个地方换成以前的写法就会出现问题
      });
    }
    if (item.children && item.children.length) {
      createRouterList(item.children);
    }
  });
}

在这里插入图片描述

另外,可能你这一步不会报错,但是打包发布后就会出现找不到模块的报错

现在使用import.meta.glob()可以批量导入文件

let modules = import.meta.glob("../views/**/*.vue");
//获取到的数据是这样的
//{
//	../views/hellworld/index.vue: () => import('/src/views/hellworld/index.vue')
//	../views/hellworld/shopping.vue: () => import('/src/views/hellworld/shopping.vue')
//	../views/home.vue: () => import('/src/views/home.vue')
//	../views/index.vue: () => import('/src/views/index.vue')
//}

在这里插入图片描述

结尾

入坑的小菜鸡,还有很多路要走呀,昨天还遇到装jsx插件报错的问题,先是给vite升级成3.0还是不行,又尝试着给node换一下版本,换成了16.14.1的版本后莫名其妙就好了,真是太痛了。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vite 和 Vue 3 中配置动态路由非常简单。下面是一些基本步骤来配置动态路由: 1. 首先,确保你已经安装了 Vue Router。你可以使用以下命令安装它: ```bash npm install vue-router@4 ``` 2. 在项目的根目录下创建一个名为 `router` 的文件夹,并在其中创建一个 `index.js` 文件。这将是我们的路由配置文件。 3. 在 `index.js` 文件中,首先导入 Vue 和 Vue 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>` 标签来处理路由导航和渲染组件。 希望以上步骤对你有所帮助!如果有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值