代码分割
代码分割可以将代码拆分成小的 chunks,然后按需加载,而非在用户使用前下载整个应用程序。
该项目设置支持通过 dynamic import()
进行代码分割。该提案处于第四阶段。与 import()
类似的函数形式将模块名称作为参数,并返回一个包含始终被解析为模块的命名空间对象的 Promise
。
以下是一个简单的示例:
moduleA.js
const moduleA = 'Hello';
export { moduleA };
App.js
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;
这将使 moduleA.js
及其所有唯一依赖项成为单独的 chunk,仅在用户点击 '加载' 按钮后才会加载。有关创建的 chunk 的更多信息,请参见 生产环境构建 部分。
如果你喜欢的话,也可以将其与 async
/ await
语法一起使用。
使用 React Router
如果你使用的是 React Router,请查看 本教程
还可以查看 React 文档中的代码分割章节。