我一直在寻找一个很好的解决方案,可以在匹配的路由上按需加载异步响应组件,而无需Webpack import,System.import,require.ensure,...
我想避免客户端代码中的Webpack足迹。
在服务器上我获取所有路由并将匹配的位置呈现为静态HTML / JS。像经典的SSR一样。
wrap=true
wrap=true
在服务器上呈现 c1.js 以从DB获取数据(通用ajax)这样我有一个小的输入文件,可以:
https://host
并按需加载组件(/路径)https://host/path
和渲染补充组件(无异步)https://host/path
并获取并呈现异步组件使用浏览器历史记录(后退)而不请求数据或组件(Redux存储和脚本标记中都存在)
能够使用具有分页功能的组件(加载更多数据并重用已提取的组件)
我对此的看法:
将异步组件直接呈现给Dom而不是将它们缓存在脚本标记中将丢失卸载父组件上的组件代码(因为main.bundle.js中不存在异步组件)
将反应代码拆分为独立捆绑包是不好的做法?
`<script src=bundle.js /><script>*c1.js* code</script>`
<App/>
或<Home/>
)是不好的做法
答案 0 :(得分:0)
我不明白为什么你必须在客户端代码中使用任何特定于Webpack的代码?以下内容来自名为react-loadable
的库。您可以执行的唯一特定于Webpack的操作是在导入附近放置一个Webpack特定注释,以使其使用指定的名称。
import Loadable from 'react-loadable';
import Loading from './my-loading-component';
const LoadableComponent = Loadable({
loader: () => import('./my-component'),
loading: Loading,
});
export default class App extends React.Component {
render() {
return <LoadableComponent/>;
}
}
这是我建议您在想要进行代码分割时开始使用的库。特别是如果你也想做SSR。它有一些实用程序类可以帮助您。