我接受了面试,招聘人员问我“处理部分更新并管理应用程序大小”
例如,他解释并展示了一个大小为8MB的SPA,他说这不理想和完美!?!?
他说我们应该用不同的方法管理应用程序大小!?
对于测试,在面试会议之后,我使用谷歌浏览器DevTools检查了linkedin网站。在任何请求后,我看到响应谁是html网页(Html,Css,JS),并且显然每个请求后的linkedin都会向页面添加html响应,这是控制SPA大小的想法!
所以我有一个问题,默认情况下在create-react-app包中我们有webpack来创建web模块,并将所有组件加载到一个bundle.js,这个js文件对于40个或更多组件来说会很重。可能是10MB或更多...
如何使用完美而准确的部分更新方法实现真实优化的SPA结构?
不幸的是我只知道一点英语,如果我错误地写英文,请原谅我:-); - )
谢谢
答案 0 :(得分:3)
我认为您需要的是动态导入或异步加载组件(或更多代码)。有很多方法可以做到这一点,如
最后一个例子可以这样做:
class Dynamic extends Component {
constructor(props) {
super(props);
this.state = { module: null };
}
componentDidMount() {
const { path } = this.props;
import(`${path}`)
.then(module => this.setState({ module: module.default }))
}
render() {
const { module: Component } = this.state; // Assigning to new variable names @see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
return(
<div>
{Component && <Component />}
</div>
)
}
}
上面的代码正在做的是在已经加载组件代码之后加载组件代码,方法是在组件中挂载它。
此代码分割方法目前是
由create-react-app支持。
了解更多here
同时检查此react-loadable
答案 1 :(得分:0)
我建议您查看 ReactJs 文档中的延迟加载概念。它基本上只在需要时才导入并减少包大小。