为了提高页面加载性能,加载首屏的加载速度,有的时候我们需要对路由进行懒按需加载,减少首屏需要加载的代码包的体积。
按需加载就是不加载当前路由匹配的组件代码,而不加载其他组件的代码
V3中的实现
在V4版本之前,需要利用getComponet
这个API来实现按需加载:
const about = (location, cb) => {
require.ensure([], require => {
cb(null, require('../Component/about').default)
}, 'about')
}
//配置route
<Route path="helpCenter" getComponent={about} />
其中require.ensuire
是Webpack的语法:
require.ensure(
dependencies: String[],
callback: function(require),
errorCallback: function(error),
chunkName: String
)
给定dependencies
参数,将对应的文件拆分到单独的bundle中,此bundle会被异步加载。可以实现动态加载依赖(使用CommonJS的模块语法时这是动态加载依赖的唯一方法),这样能够做到在模块执行时才运行代码,只有在满足某些条件时才加载依赖项。