React路由懒加载lazy、Suspense以及Vite的Glob 导入文件

一次性加载太多的路由文件会使首次加载的速度很慢,建议将路由以懒加载的形式
新建文件夹routers
在这里插入图片描述
common.ts如下:

import { lazy } from 'react';

const productRouters: object[] = [
  {
    path: '/list',
    component: lazy(() => import('@/pages/List/index')),
  },
  {
    path: '/detail',
    component: lazy(() => import('@/pages/Detail/index')),
  },
];

export default productRouters;

在index.ts中使用vite的import.meta.globEager()自动导入文件

const autoLoadRoutes: any = [];
const routerFiles = import.meta.globEager('./*.ts');
console.log(routerFiles,'routerFiles')
const paths = Object.keys(routerFiles);
console.log(paths,'paths')
paths.forEach((path) => {
  console.log(path,'path')
  autoLoadRoutes.push(...routerFiles[path].default);
});
const routes = [
  ...autoLoadRoutes,
  {
    path: '*',
    component: () => import('@/pages/NotFound'),
  },
];

export default routes;

控制台可以看到会自动导入我们在routers文件夹下建的两个文件,遍历拿到地址放在autoLoadRoutes中
在这里插入图片描述
最后在APP中用Suspense 包裹Switch

import { Suspense } from 'react';

      <Suspense fallback={<div />}>
        <Switch>
          {routes.map((route: any) => (
            <Route path={route.path} key={route.path} component={route.component} />
          ))}
        </Switch>
      </Suspense>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值