vite2.0+ react实现按需动态异步加载组件

vite

一个新的脚手架工具,尤雨溪开发的一个工具,速度确实快,本人亲手验证,项目中也已经引入。注意:Vite 需要 Node.js 版本 >= 12.0.0

  • 初始化项目:npm init @vitejs/app 名称 – --template vue
  • 接下来cmd中可以进行选择使用框架,选择react或者react-ts
  • cd 目录
  • npm install
  • npm run dev

引入组件

使用vite提供的import.meta.glob方法加载所有组件文件,得到是一个函数数组,每一个函数都是一个import(url) 异步;ps:不用担心import.meta.glob加载了所有组件文件,因为他不是真的加载所有文件,而是实现了一个import(路径)方法的集合,你不调用方法,就不会加载文件

// 直接贴一下我的代码,引入了antd,使用React.lazy加载组件
import React from 'react';
import { Spin } from 'antd';
//这里的路径用了./*/*就是加载所有当前文件平级的文件夹下的所有文件
const modules = import.meta.glob('./*/*');
const LoadPage: React.FC<appProps> = ({ data }) => {
    const Home = '/home/index.tsx';
    const URL = data ? (data.URL ? data.URL: Home) : Home;
    //使用data.URL拼接url去匹配modules里面的key,得到对应的value就是异步加载组件的函数
    const Compontents = React.lazy(modules[`.${URL}`] as any);
    return (
        <React.Suspense fallback={<div style={{
            height: '100%',
            display: 'flex',
            justifyContent: 'center',
            alignItems: 'center'
        }}><Spin size="large" /></div>}>
            <Compontents />
        </React.Suspense>
    );
}
//需要使用加载异步组件的地方,直接引入此组件使用,然后根据自己的文件夹路径修改import.meta.glob里的路径
export default LoadPage;
interface appProps {
    data: CD
}
interface CD {
    CDID: string
    CDMC: string
    ID: string
    URL: string
    child: [CD] | null
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高梅飞花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值