原理:CommonJS与import()
方法一:CommonJS模块语法
利用require.ensure,require.ensure()是webpack特有的,已经被import()取代。
方法
require.ensure( dependencies: String[], callback: function(require), errorCallback: function(error), chunkName: String )
方法二:import()
ES2015 loader规范定义了import()方法,可以在运行时动态地加载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 ( <div> <button onClick={this.handleClick}>Load</button> </div> ); } } export default App;
react-router中使用按需加载
demo地址 ,此处配合create-react-app使用,自己配置webpack合理需要配置 output.fileName 和 output.chunkFilename
方法一:使用react.lazy
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import React, { Suspense, lazy } from 'react'; const Program1 = lazy(() => import('./Program1')); const App = () => ( <Router> <Suspense fallback={<div>Loading...</div>}> <Switch> <Route path="/program1" component={Program1}/> </Switch> </Suspense> </Router> );
方法二:利用高阶组件
- 写一个高阶组件用于动态加载组件
// 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 ? <C {...this.props} /> : 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 = () => ( <Router> <Suspense fallback={<div>Loading...</div>}> <Switch> <Route exact path="/program2" component={Program2}/> </Switch> </Suspense> </Router> );
以上两种方法都是react官方推荐
code-splitting
以上所述就是小编给大家介绍的《webpack and react按需加载》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 介绍同步加载、异步加载、延迟加载[原创]
- .net加载失败的程序集重新加载
- 虚拟机类加载机制:类加载时机
- 探秘类加载器和类加载机制
- hibernate中加载策略+批加载+懒加载异常【原创】
- [译] React 16.6 懒加载(与预加载)组件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux C编程一站式学习
宋劲杉 / 电子工业出版社 / 2009-12 / 60.00元
本书有两条线索,一条线索是以Linux平台为载体全面深入地介绍C语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试方法。本书分为两部分:第一部分讲解编程语言和程序设计的基本思想方法,让读者从概念上认识C语言;第二部分结合操作系统和体系结构的知识讲解程序的工作原理,让读者从本质上认识C语言。. 本书适合做零基础的初学者学习C语言的第一本教材,帮助读者打下牢固的基础。有一定......一起来看看 《Linux C编程一站式学习》 这本书的介绍吧!