原理:CommonJS與import() 方法一:CommonJS模塊語法
利用require.ensure,require.ensure()是webpack特有的,已經(jīng)被import()取代。
方法
require.ensure( dependencies: String[], callback: function(require), errorCallback: function(error), chunkName: String )方法二:import()
ES2015 loader規(guī)范定義了import()方法,可以在運(yùn)行時動態(tài)地加載ES2015模塊
方法
import("Component").then() // or 在 async中使用 await import("Component")
demo
import React, { Component } from "react"; class App extends Component { handleClick = () => { import("./moduleA") .then(({ moduleA }) => { // Use moduleA }) .catch(err => { // Handle failure }); }; render() { return (react-router中使用按需加載); } } export default App;
demo地址,此處配合create-react-app使用,自己配置webpack合理需要配置output.fileName和output.chunkFilename
方法一:使用react.lazyimport { BrowserRouter as Router, Route, Switch } from "react-router-dom"; import React, { Suspense, lazy } from "react"; const Program1 = lazy(() => import("./Program1")); const App = () => (Loading...
查看代碼
方法二:利用高階組件寫一個高階組件用于動態(tài)加載組件
// async Component import React, { Component } from "react"; export default function asyncComponent(importComponent) { class AsyncComponent extends Component { constructor(props) { super(props); this.state = { component: null }; } async componentDidMount() { const { default: component } = await importComponent(); this.setState({ component: component }); } render() { const C = this.state.component; return C ?: null; } } return AsyncComponent; }
查看代碼
引用并使用該高階組件做按需加載
import { BrowserRouter as Router, Route, Switch } from "react-router-dom"; import asyncComponent from "./asyncComponent"; import React, { Suspense } from "react"; const Progran2 = asyncComponent(() => import("./Program2")); const App = () => (Loading...
查看代碼
以上兩種方法都是react官方推薦code-splitting
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/102347.html
摘要:的按需加載方式中實(shí)現(xiàn)按需加載只需要按照下面代碼的方式實(shí)現(xiàn)就可以了。配置按需加載方式創(chuàng)建文件這個文件其實(shí)是個通過包裝后的組件來使用,下面會具體講這個東西。 React-router 4 介紹了在router4以后,如何去實(shí)現(xiàn)按需加載Component,在router4以前,我們是使用getComponent的的方式來實(shí)現(xiàn)按需加載的,router4中,getComponent方法已經(jīng)被移除...
摘要:實(shí)際上程序應(yīng)當(dāng)只加載當(dāng)前渲染頁所需的,也就是大家說的代碼分拆將所有的代碼分拆成多個小包,在用戶瀏覽過程中按需加載。這里面有個方法這是提供的方法,這也是按需加載的核心方法。 注:本文使用的 react-router 版本為 2.8.1 React Router 是一個非常出色的路由解決方案,同時也非常容易上手。但是當(dāng)網(wǎng)站規(guī)模越來越大的時候,首先出現(xiàn)的問題是 Javascript 文件變得...
摘要:之前在中文官方文檔使用的是。實(shí)現(xiàn)按需加載,升級之后,這個方法就走不通了。之后看了的官網(wǎng),按需加載只需要神器。 之前在react-router中文官方文檔使用的是require。ensure實(shí)現(xiàn)按需加載,升級之后,這個方法就走不通了。之后看了react-router的官網(wǎng),按需加載只需要神器 react-loadable 。react-loadable的好處: 基于import()的自...
摘要:之前分享過幾篇關(guān)于技術(shù)棧的原創(chuàng)文章解析前端架構(gòu)學(xué)習(xí)復(fù)雜場景數(shù)據(jù)設(shè)計干貨總結(jié)打造單頁應(yīng)用一個項(xiàng)目理解最前沿技術(shù)棧真諦一個工程實(shí)例今天進(jìn)一步剖析一個實(shí)際案例移動網(wǎng)頁版。目前面臨的問題在于提高產(chǎn)品的各方面性能體驗(yàn)。 之前分享過幾篇關(guān)于React技術(shù)棧的原創(chuàng)文章: 解析Twitter前端架構(gòu) 學(xué)習(xí)復(fù)雜場景數(shù)據(jù)設(shè)計 React Conf 2017 干貨總結(jié)1: React + ES next ...
摘要:配置方式找到文件如需添加路由則在里面添加,同時需要后端更改配置除了上面的路徑,其他路徑全部指向單頁應(yīng)用多路由預(yù)渲染指南使用說明源碼為方便快速構(gòu)建項(xiàng)目,本例所有配置的代碼均放在項(xiàng)目中。 寫在前面 每次構(gòu)建react項(xiàng)目的時候都會配置一大堆東西,時間久了就會忘記怎么配置。為了方便自己記憶也為了其他開發(fā)者在構(gòu)建react應(yīng)用時能夠快速開發(fā),故作此記錄。 本項(xiàng)目基于 create-react-...
閱讀 3055·2021-11-22 09:34
閱讀 2521·2021-09-30 09:47
閱讀 1456·2021-09-03 10:32
閱讀 3726·2021-08-16 10:49
閱讀 1798·2019-08-30 15:55
閱讀 2475·2019-08-30 15:52
閱讀 3333·2019-08-30 15:44
閱讀 1365·2019-08-30 15:44