react实现路由懒加载(异步组件)

正如标题,react项目在打包完成后发现chunk.js文件比较大,导致打开首页需要时间比较久,因此,需要进行优化。
其实仔细考虑一下不难发现,由于打包后将所有资源都打包到了一个chunk.js下,导致所有资源都一起加载了,所以,进入页面会很慢。咱们的预期目标是进入首页只加载首页的资源,进入详情页至加载详情页的资源。那么,react-loadable是你不错的选择。
1、首先,要想使用它需要先安装它。
yarn add react-loadable
yarn add babel-plugin-syntax-dynamic-import

根据npm官网找到react-loadeable完成配置,当然我为了以后方便使用对react-loadable进行了封装。

2 其次,在utils文件夹下新建loadable.js文件,配置如下:
import React from "react";
import { Spin } from 'antd';
import Loadable from "react-loadable";

import './index.less'

// 加载动画
const loadingComponent = () => {
  return <div className={'spin-loading'}>
    <div><Spin size="large" /></div>
  </div>;
};

// 当不传加载动画时候使用默认的加载动画
export default (loader, loading = loadingComponent) => {
  return Loadable({
    loader,
    loading,
  });
};
3、在index.js文件里配置路由时候就可以使用如下方式进行懒加载处理
import React from "react";
import ReactDOM from "react-dom";
import "./index.css";
import * as serviceWorker from "./serviceWorker";
import { BrowserRouter as Router, Route } from "react-router-dom";

import { createBrowserHistory } from "history";
import loadable from './utils/loadable'

const App = loadable(() => import("./router/login/App"));
const MoveVideo = loadable(() => import("./router/video"));
const UserReg = loadable(() => import("./router/userReg/index"));
const FoodList = loadable(() => import("./router/food/index"));

ReactDOM.render(
  <Router history={createBrowserHistory()}>
    <Route exact path="/" component={App} />
    <Route path="/user-reg/" component={UserReg} />
    <Route path="/food-list" component={FoodList} />
    <Route path="/video" component={MoveVideo} />
  </Router>,
  document.getElementById("root")
);

serviceWorker.unregister();
4、再次进行打包编译,就会发现多出很多chunk.js文件,这就是从原来一个拆成多个,这样加载速度就会得到提升。
  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值