【发布时间】:2018-07-20 06:14:17
【问题描述】:
应用程序/index.js
import React from 'react';
import { with_code_splitting } from 'components/App/Code_splitting/HOC';
export default class App extends React.PureComponent {
render () {
return <Child/>;
}
}
const Child = with_code_splitting({ dynamic:() => import('components/App/Child'), static:() => require.resolveWeak('components/App/Child') });
App/Code_splitting/HOC.js
import React from 'react';
export function with_code_splitting (options) {
return class Decorated_component extends React.Component {
static component = null;
state = { component:Decorated_component.component };
componentWillMount() {
if (!this.state.component) {
if (process.env.NODE_ENV !== 'server_side_rendering') {
options.dynamic()
.then(({ default:component }) => {
Decorated_component.component = component;
this.setState({ component });
});
}
else { // for server-side-rendering
const module_ID = options.static();
console.log(__webpack_modules__[module_ID]); // undefined
this.setState({ component:__webpack_require__(module_ID) });
}
}
}
render() {
if (this.state.component) return <this.state.component {...this.props} />
else return null;
}
}
}
我正在使用 webpack 3.9.1,反应 16.0.0。
我正在尝试使用 SSR 实现代码拆分。 但是 'require.resolveWeak' 中的第 'module_ID' 元素不在 __webpack_modules__ 数组中。
只有该索引处的元素为空。
客户端的代码拆分效果很好。
我不知道我误解了什么。我想要一个答案。感谢您的阅读。
【问题讨论】:
-
我用不同的方式制作了一个 babel 插件解决了这个问题。 :)
标签: reactjs webpack code-splitting server-side-rendering