在vite中搭建动态路由

news/2024/7/10 2:44:26 标签: 前端, vue, vite

1.在每一个views文件夹中创建page.js配置文件,作为路由的meta选项配置

// page.js
export default {
  title: "首页",
  // ...
};

2.在router中使用import.meta.glob加载所有的路由模块

import { createRouter, createWebHistory } from "vue-router";

// 寻找views文件号中所有的page.js
const pages = import.meta.glob("../views/**/page.js", {
  eager: true, // 渴望得到更多的数据
  import: "default", // 希望得到default中的数据
});
// 加载所有的页面模块
const pageComps = import.meta.glob("../views/**/index.vue");
const routes = Object.entries(pages).map(([path, meta]) => {
  const pageJsPath = path; // 拿到原始的path
  path = path.replace("../views", "").replace("/page.js", "");
  path = path || "/";
  // 将原始的path种的page.js替换为index.vue
  const compsPath = pageJsPath.replace("page.js", "index.vue");
  const name = path.split("/").filter(Boolean).join("-") || "index"; // 去掉空字符串
  // 映射为一个路由配置对象
  return {
    path,
    name,
    component: pageComps[compsPath],
    meta,
    children: [],
  };
});
// 选出layout布局路由组件
const newRoutes = routes.find((item) => item.name === "index");
// 选出除了布局组件以外其他的组件
const filterRoutes = routes.filter((item) => item.name !== "index");
// 将其他的路由组件作为layout组件的子组件
filterRoutes.forEach((item) => {
  newRoutes.children.push(item);
});

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [newRoutes],
});

// 在路由跳转前设置页面标题
router.beforeEach((to, from, next) => {
  document.title = to.meta.title; // 设置页面标题
  next();
});

export default router;


http://www.niftyadmin.cn/n/4984414.html

相关文章

Docker技术--Docker的安装

1..Docker的安装方式介绍 Docker官方提供了三种方式可以实现Docker环境的安装。分别为:Script、yum、rpm。在实际的环境中建议使用yum或者是rpm。 2..Docker的yum安装 # 1.下载docker wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.re…

Java 中数据结构ArrayList的用法

Java ArrayList ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。 方法集合样例代码 import java.util.*;public class list_set_iterator {public static void main(String[] args) {Lis…

ACE通信设计空间指导

ACE通信设计空间 通信是网络应用程序设计的基础。本章就通信设计空间做了领域分析,介绍了网络应用程序之间互相作用的规则、形式和抽象层次。 本章我们将讨论一下设计空间: 一、无连接协议和面向连接协议 所谓协议,就是一组规则,用来指定“控制信息”和“数据信息”如何…

Java泛型机制

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

具有文件操作和滤波功能的Open3D软件界面(附python pyqt 代码)

安装依赖 pip install pyqtgraph -i https://pypi.tuna.tsinghua.edu.cn/simple/ pip install pyopengl -i https://pypi.tuna.tsinghua.edu.cn/simple/对代码的解释: 定义open3d_software类: 这个类继承自QtWidgets.QMainWindow和Ui_MainWindow类,用于创建Open3D软件的主窗…

解决未授予用户在此计算机上的请求登录类型

步骤一:在被访问的计算机中操作 1、点击开始菜单,在计算机上单击右键,选择管理。 2、依次展开系统工具—本地用户和组—用户。 未授予用户在此计算机上的请求登录类型 3、双击Guest,将账户已禁用前面的勾去掉,点击应…

重要通知,亚马逊正式取消轻小商品计划!

美亚轻小商品计划今日正式关闭 轻小商品计划允许卖家以更低的配送费用提供更小、更轻、更便宜的产品。正常的亚马逊FBA费用通常会使销售低价商品无利可图,但轻小商品计划降低了满足某些标准(包括重量、尺寸和价格)的商品的配送成本。 不过&a…

百度百科词条怎么更新?怎么能顺利更新百科词条?

企业和个人百度百科词条的更新对于他们来说都具有重要的意义,具体如下: 对企业来说: 塑造品牌形象:百度百科是一个常被用户信任并参考的知识平台,通过更新企业词条可以提供准确、全面的企业信息,帮助企业塑…