- 微前端是为了解决将复杂的单体应用以功能或业务需求垂直的切分成更小的子系统而设计的一套解决方案,主应用和子应用可独立开发、独立部署。微前端模式下主、子应用都是独立的应用,微前端作为运行在主、子应用之下的框架层,不会干涉主、子 应用在 dev 模式下的热更新能力。
- 在微前端场景下,主、子应用的热更新能力需要构建工具层提供相应的配置(例如 webpack), garfish 不默认提供热更新的能力。
- 但是在微前端场景下,由于应用场景的特殊性,我们也会针对各种场景下的热更新情况作出相应的说明与配置示例,期望能给业务方提供相应的参考。
模块热更新也叫 HMR,全称是 Hot Module Replacement,指当你在更改并保存代码时,构建工具将会重新进行编译打包,并将新的包模块发送至浏览器端,浏览器用新的包模块替换旧的,从而可以在不刷新浏览器的前提下达到修改的功能。
React 官方提供,相比于 react-hot-loader,容错能力更高。
hot
包裹入口组件。React-Hot-Loader is expected to be replaced by React Fast Refresh. Please remove React-Hot-Loader if Fast Refresh is currently supported on your environment -- 官网
首先,请确认微前端应用的构建配置已按照推荐配置进行了设置:
主应用线下、子应用线下场景:
首先检查子应用作为独立应用启动时,是否具备热更新能力。
如果子应用作为独立应用启动时,具备热更新能力,但微前端模式下未生效,可能原因:
若主应用使用了 react-fast-refresh webpack 插件作为热更新配置,请关闭该配置:
主应用线上、子应用线下场景:
【若在主应用域名下】
【若在子应用域名下】
这种情况发生在主、子 应用都为本地的场景下。在子应用页面下主应用热更新后子应用内容丢失。 此问题 garfish 方案已解决。请升级 garfish 至最新版本。