react实现异步插件_React-loadable实现组件进行异步加载

通过React-loadable库,可以优化React项目的首屏加载时间,避免一次性加载所有组件。首先安装react-loadable,然后创建一个公共的loadable.js文件封装动态加载逻辑。在router.js中,用loadable包裹组件,如Login,使其变为异步加载。运行项目后,网络请求中发现chunk.js文件的大小减小,证明按需加载生效。
摘要由CSDN通过智能技术生成

React 项目打包时,如果不进行异步组件的处理,那么所有页面所需要的 js 都在同一文件中(bundle.js),整个js文件很大,从而导致首屏加载时间过长.所有,可以对组件进行异步加载处理,可以使用 React-loadable实现。

安装

yarn add react-loadable

在没有使用react-loadable之前,在我们的router.js里面是直接import Login这个组件的

import React from "react";

import {

BrowserRouter as Router,

Route,

Switch

} from "react-router-dom";

import Login from "../pages/Login/Login";

class RouteConfig extends React.Component {

render() {

return (

);

}

}

export default RouteConfig;

运行项目查看network记录

image.png

可以看到1.chunk.js是1.5MB

现在我们来添加react-loadable(可通过上面安装方法安装)

完后在src/utils 下新建一个公共封装的loadable.js,代码如下:

import React from "react";

import Loadable from "react-loadable";

const loadingComponent = () => {

return

loading
;

};

export default (loader, loading = loadingComponent) => {

return Loadable({

loader,

loading,

});

};

接收一个配置对象为参数,第一个属性名为loader,是一个方法,用于动态加载我们所需要的模块,第二个参数就是我们的Loading组件咯,在动态加载还未完成的过程中会有该组件占位。

我们可以将按需加载的组件和过渡组件通过参数传入最后返回包装后的组件

在router.js里面做如下修改

import React from "react";

import {

BrowserRouter as Router,

Route,

Switch

} from "react-router-dom";

const Login = loadable(() => import("../pages/Login/Login"));

class RouteConfig extends React.Component {

render() {

return (

);

}

}

export default RouteConfig;

运行项目查看network记录

image.png

这个时候1.chunk.js是1.0MB,因为只加载所需的依赖,工作原理其实就是在页面组件上有包了一成高级组件来代替原来的页面组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值