跳至主要內容

bluestudyhard小于 1 分钟

怎么实现自动注册组件

路由

如何自动注册路由

这里利用一下 import.meta.glob,它会在编译时

import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router";

const routes: RouteRecordRaw[] = [];
// 动态的注册路由,不用每次手动添加路由
function importViews() {
  const views = import.meta.glob("../views/*.vue");

  for (const path in views) {
    const name = path.match(/\.\/views(.*)\.vue$/)?.[1]?.toLowerCase();
    // console.log(path.match(/\.\/views(.*)\.vue$/), views);
    if (!name) return; // 可能name为undefined
    routes.push({
      path: name === "/home" ? "/" : name,
      component: views[path],
    });
  }
}
importViews();

const router = createRouter({
  history: createWebHashHistory(),
  routes,
});

export default router;
export { routes };