webpack热更新需配置hot: true并手动接入hmr:css天然支持局部刷新;js须用module.hot.accept()接管更新,并通过module.hot.data保持状态。

Webpack 开发服务器开启热更新,核心是启用 HMR(Hot Module Replacement)机制,并确保服务端与客户端协同工作。只配 hot: true 不够——它默认仍可能退化为整页刷新(Live Reload),真正局部刷新必须配合代码接入。
基础配置:devServer 启用 HMR
在 webpack.config.js 的 devServer 选项中设置:
-
hot: true:启用 HMR(Webpack 5+ 自动注入插件,无需手动添加HotModuleReplacementPlugin) -
hotOnly: false(推荐):允许 HMR 失败时自动 fallback 到页面刷新,避免白屏 - 确保
entry正确,例如:entry: ['./src/index.js'];Webpack CLI 会自动注入 HMR 运行时,无需显式写'webpack/hot/dev-server'(除非你自定义入口链)
CSS 文件天然支持热更
只要使用 style-loader + css-loader(或 sass-loader 等),修改 .css/.scss 文件后,样式会直接 patch 到页面,DOM 结构、表单输入值、滚动位置全部保留。这是验证 HMR 是否生效最快速的方式。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
JS 模块需手动接管更新逻辑
JS 文件不会自动热替换,必须在模块内显式调用 module.hot.accept():
- 在要热更新的 JS 文件中加入判断:
if (module.hot) { module.hot.accept(() => { /* 重新执行渲染或更新逻辑 */ }); } - 若依赖其他模块(如
./utils.js),可指定路径:module.hot.accept('./utils.js', () => { console.log('utils 已更新'); }) - 不写
accept,哪怕配置了 HMR,保存 JS 文件仍会触发整页刷新
状态保持靠开发者自己维护
HMR 不自动保存 JS 运行时状态,但提供 module.hot.data 供跨更新传递数据:
- 更新前可将计数器、表单值等存入
module.hot.data - 在
accept回调中读取旧数据,执行 DOM 更新,再更新module.hot.data - 例如:
if (module.hot && module.hot.data) { count = module.hot.data.count; },然后在回调末尾写回:module.hot.data = { count };
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










