react懒加载
为什么需要懒加载
React应用都会使用Webpack等打包工具进行文件打包。打包是一个根据入口文件,查询各文件引入关系,最后将所有需要的文件合并到一个单独文件的过程。
随着我们项目需求的增大,这个单独的文件就会越来越大,首次加载往往会有好几M的文件。严重影响体验,所以我们需要拆分这个文件。
拆分文件的思路之一就是懒加载。即当组件需要被调用时才去加载
如何做
主流分为两种解决方案
react官方提供的代码分割React.lazy
react官网推荐的loadable-components
两种解决方案最大的区别在于方案2支持SSR(Server Side Rendering);
import()动态引入
写法样例
// 使用前
import { add } from './math';
console.log(add(16, 26));
// 使用后
import("./math").then(math => {
console.log(math.add(16, 26));
});import()是符合ECMAScript提案的一种方式。当webpack遇到这种语法时,会自动进行代码分割。当模块被调用时,进行加载
关于使用import()时webpack的配置
import() 的原理
React.lazy
使用React.lazy(()=>import(uri))形式引入组件
使用被引入的组件需要包裹在Suspense之中
写法样例
思考:既然import()已经帮我们做了这么一个代码分割。那么我们为什么还需要用
React.lazy()包一下?
loadable-components
写法样例
思考:可以看到与React.lazy()方式主要差异就是他不需要包裹层,那么他是如何实现的?
思考:那么他可以实现包裹层中组件没有加载完出等待效果嘛?
Last updated
Was this helpful?