我的编程空间,编程开发者的网络收藏夹
学习永远不晚

React中代码分割的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

React中代码分割的方法是什么

这篇“React中代码分割的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React中代码分割的方法是什么”文章吧。

前言

在 React 应用中,我们通常的做法是直接将某个模块导入到页面中,这样做导致的结果是打包出来的包体积过大。尤其是在引入了体积巨大的第三个库的情况下,打包后的包体积会十分巨大。因此,我们需要关注我们的应用中所包含的代码,以避免因体积过大而导致加载时间过长。

对代码进行分割能够“懒加载”当前用户所需要的内容,能够显著提高应用的性能。尽管并没有减少应用的整体代码体积,但可以避免加载用户永远不需要的代码,并在初始加载的时候可以减少所需加载的代码量。

import()

import() 是 Webpack 提供的用于分割代码的一个方法。该方法的返回结果是Promise,当文件加载完成后悔将模块导出给 promise.then 方法的回调。

例如有一个 math 模块,导出了 add方法和 minus 方法:

export const add = (a, b) => {return a + b;}export const minus = (a, b) => {return a - b;}

通常的做法是在页面直接引入模块:

import { add } from './math'console.log(add(5, 10));

使用 import 动态导入模块:

import('./math').then((math) => {console.log(math.add(5, 10))})

当 Webpack 解析到该语法时,会自动进行代码分割。如果是使用 Create React App 创建的 React 应用,import 功能已开箱即用。

import React, { Component } from 'react';class App extends Component {  handleClick = () => {    import('./math')      .then(({ add }) => {        add(5, 10)      })      .catch(err => {        // Handle failure      });  };  render() {    return (      <div>        <button onClick={this.handleClick}>两数相加</button>      </div>    );  }}export default App;

React.lazy

React.lazy 方法可以让我们动态加载组件,有助于缩减打包后 bundle 的体积,并延迟加载在初次渲染时未用到的组件。

React.lazy 接受一个函数,这个函数需要动态调用 import()。它必须返回一个 Promise,该 Promise 需要 resolve 一个 export default 的 React 组件。

const AsyncComponent = React.lazy(() => import('./OtherComponent'));

React.lazy 返回的是一个异步组件 不能单独使用,需要配合 React.Suspense 使用。当这个异步组件的状态是 pending 时显示的是 Suspense 中 fallback 的内容,只有 resolve 时才会显示加载好的组件。如此使得我们可以在使用 lazy 组件时做优雅降级(如在 fallback添加 loading 效果等)。

import React, { Suspense } from 'react';const AsyncComponent = React.lazy(() => import('./OtherComponent'));function MyComponent() {  return (    <div>      <Suspense fallback={<div>Loading...</div>}>        <AsyncComponent />      </Suspense>    </div>  );}

import() + React Loadable

React Loadable 是一个轻量级的代码分割组件,它是一个高阶组件,能让你的应用程序在渲染之前动态的加载任何模块。

使用 import() + React Loadable ,能优雅的实现基于 react-router 4.x 版本的路由分割:

import Loadable from 'react-loadable';const LoadableBar = Loadable({  loader: () => import('./components/Bar'),  loading() {    return <div>Loading...</div>  }});class MyComponent extends React.Component {  render() {    return <LoadableBar/>;  }}

在实际业务开发中,我们通常会使用一些框架来快速开发React应用。在这些框架中,通常都会提供按需加载的功能。下面,我们来看看 UmiJS 框架中的按需加载。

UmiJS 按需加载

UmiJS 是一个可扩展的企业级前端应用框架,它以路由为基础,支持配置式路由和约定式路由。UmiJS 封装了一个 dynamic 组件来实现代码分割。

启用按需加载

UmiJS 的按需加载功能默认是关闭的,需要在使用之前通过配置开启。在 UmiJS 项目中添加如下的配置开启:

export default {  dynamicImport: {},}

使用按需加载

首先封装一个异步组件:

import { dynamic } from 'umi';export default dynamic({  loader: async function() {    // 这里的注释 webpackChunkName 可以指导 webpack 将该组件 HugeA 以这个名字单独拆出去    const { default: HugeA } = await import( './HugeA');    return HugeA;  },});

然后使用封装好的异步组件:

import React from 'react';import AsyncHugeA from './AsyncHugeA';export default () => {  return <AsyncHugeA />;}

以上就是关于“React中代码分割的方法是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

React中代码分割的方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

React中代码分割的方法是什么

这篇“React中代码分割的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React中代码分割的方法是什么”文章吧
2023-06-29

React代码分割的实现方法介绍

虽然一直有做react相关的优化,按需加载、dll分离、服务端渲染,但是从来没有从路由代码分割这一块入手过,所以下面这篇文章主要给大家介绍了关于React中代码分割的方式,需要的朋友可以参考下
2022-12-03

为什么在 React 应用中使用动态导入进行代码分割是必须的

对于基于 Servlet 规范的 Java Web 应用程序,在开发完成后,通常会将其打包为 WAR 文件,然后部署到像 Apache Tomcat 或 Jetty 这样的 Web 容器中。

python分割文本的方法是什么

在Python中,有多种方法可以用来分割文本。以下是几种常用的方法:1. 使用split()函数:split()函数可以用来将文本按照指定的分隔符进行分割,并返回一个列表。例如:```text = "Hello, World!"words
2023-09-27

Oracle中分割字符串的方法实例代码

目录1. 使用 regexp_substr() 函数1.1 方式11.2 方式21.3 注意问题(尤其是存储过程中用到,可能会入坑)2. 自定义函数2.1 自定义类型 table2.2 自定义函数2.2.1 自定义函数2.2.2 效果如下:
2023-02-15

Java 数组分割的方法有哪些?(java数组分割的方法是什么)

在Java编程中,数组分割是一个常见的操作。数组分割指的是将一个数组分成两个或多个子数组的过程。以下是几种常见的Java数组分割方法:一、使用循环遍历分割数组这是一种基本的数组分割方法,通过循环遍历数组,根据特定的条件将
Java 数组分割的方法有哪些?(java数组分割的方法是什么)
Java2024-12-21

React代码拆分的方法有哪些

本篇内容介绍了“React代码拆分的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!动态加载(import)es6提供import(
2023-07-05

mysql分割函数的使用方法是什么

在MySQL中,SUBSTRING函数用于从一个字符串中提取子字符串。其基本语法如下:SUBSTRING(str, start, length)其中:str为要提取子字符串的原始字符串start为要提取子字符串的起始位置(从1开始计数)
mysql分割函数的使用方法是什么
2024-04-09

在react中使用highlight.js将页面上的代码高亮方法是什么

今天就跟大家聊聊有关在react中使用highlight.js将页面上的代码高亮方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。通过 highlight.js 库实现对文章正
2023-06-26

YOLOv5字符分割与识别的方法是什么

这篇文章主要介绍“YOLOv5字符分割与识别的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“YOLOv5字符分割与识别的方法是什么”文章能帮助大家解决问题。字符分割在实际应用中,识别车牌的
2023-07-05

python中暂停代码的方法是什么

本篇内容主要讲解“python中暂停代码的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中暂停代码的方法是什么”吧!我们知道,在 Python 里面可以使用time.sle
2023-06-16

react的diff方法是什么

react的diff方法可用于找出两个对象之间的差异,目的是尽可能做到节点复用;diff算法是调和的具体实现,而调和是指将Virtual DOM树转换成Actual DOM树的最少操作的过程。
2023-05-14

mysql中垂直分割指的是什么

这篇文章将为大家详细讲解有关mysql中垂直分割指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、概念垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表。表的记录并不多,但是字段却很长,
2023-06-15

易语言分割文本到数组的方法是什么

在易语言中,可以使用字符串分割函数 `函数名.Split()` 来将文本分割成数组。具体的方法是将待分割的文本作为参数传递给 `Split()` 函数,并指定分隔符,函数将返回一个数组,其中每个元素是根据指定分隔符分割后的子字符串。以下是示
2023-08-17

Java代码优化的方法是什么

这篇文章主要讲解了“Java代码优化的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java代码优化的方法是什么”吧!一、代码优化的目标是:1、减小代码的体积2、提高代码运行的效率
2023-06-17

Python代码调试的方法是什么

这篇文章主要介绍“Python代码调试的方法是什么”,在日常操作中,相信很多人在Python代码调试的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python代码调试的方法是什么”的疑惑有所帮助!
2023-06-02

java代码重构的方法是什么

Java代码重构的方法有以下几种:1. 提取方法(Extract Method):将代码中的一部分抽取出来,封装成一个独立的方法,以提高代码的可读性和复用性。2. 提取变量(Extract Variable):将复杂的表达式或者重复的代码提
2023-10-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录