reactjs - 如何动态打开/关闭代码拆分
问题描述
我们有一个与 webpack 捆绑的 ReactJS 应用程序。我们使用 React-Loadable 来帮助我们进行代码拆分,现在我们的应用程序的路由器模块看起来像
import Loadable from 'react-loadable'
const LoadableComponent = (url, component)=>Loadable({
loader:()=> import(`${url}`),
loading: ()=><div></div>,
render(loaded, props){
let LoadedComponent = loaded[component]
return <LoadedComponent {...props}/>
}
})
const Landing = LoadableComponent('./components/LandingPage', 'Landing')
// ... all the other imports have this form ^
话虽如此,在开发过程中,代码拆分似乎变慢了webpack --watch
,并且会使浏览器中的调试变得更加痛苦(我们不使用源映射,因为它们过去对我们来说效果不佳)。
我试图找出一种方法来动态地打开或关闭代码拆分。我的想法是在代码拆分关闭时使LoadableComponent
行为像正常导入一样。然而,这两者import
似乎react-loadable
都太神秘了,以至于无法直截了当,我一直无法找到在 javascript 中做到这一点的方法。
解决方案
你可以尝试什么,这将取决于你的 webpack 实现,但如果你有一个开发 webpack.config 即webpack.config.dev.js
你可以添加到 plugins 数组中:
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1
})
这将停止代码拆分并且只构建一个文件。到目前为止,在我的测试react-loadable
中,这似乎很酷,并且可以正常工作而无需进行代码拆分。
如果您想要一种动态打开和关闭它的方法,您可以在启动时将命令行参数传递给 webpack,然后有条件地添加上述代码。在你的 webpack 配置文件的底部。
if (yourArgHere) {
module.exports.plugins.push(
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1
})
);
}
推荐阅读
- html - 如何使用类更改表格一些 tr 背景颜色更改
- asp.net-core - 使用生成的 C# 客户端在 .NET Core 3.1 API 中进行基本类型和子类型序列化
- reactjs - 使用 onClick 将 state/props 发送到 React 中的另一个组件
- mysql - 用 Where 和可能的所有在 rails 中进行搜索
- c# - 我在哪里可以看到代码执行时间 VS2019?
- firebase - firebase 消息传递错误是否已本地化?
- javascript - 获取选择类选项的值
- python - 从python中的zip文件深处提取文件
- pari - 如何计算pari中的模乘法逆?
- swiftui - SwiftUI NavigationView 和 NavigationLink 更改自定义视图的布局