webpack 热更新的实现原理

定义

webpack 的热更新⼜称热替换(Hot Module Replacement),缩写为HMR。 这个机制可以做到不⽤刷新浏览器⽽将新变更的模块替换掉旧的模块。

原理

webpack 的热更新在 server 及 client 端都做了处理,我们来了解一下这个过程:

(1)webpack 在 watch 模式下,文件系统中的某一个文件发生修改,webpack 监听到文件变化,根据配置文件对模块进行重新编译打包,并将打包后的代码通过简单的 JavaScript 对象保存在内存中。

(2)webpack-dev-server 与 webpack 之间的接口交互,主要是webpack-dev-middleware 调⽤ webpack暴露的 API 对代码变化进⾏监 控,并且告诉 webpack,将代码打包到内存中。

(3)webpack-dev-server 监控:当我们在配置⽂件中配置了devServer.watchContentBase 为 true 的时候,Server 会监听这些配置⽂件夹中静态⽂件的变化,变化后会通知浏览器端对应⽤进⾏ live reload。

注意,这⼉是浏览器刷新,和 HMR 是两个概念。

(4)主要是通过sockjs(webpack-dev-server 的依赖)在浏览器端和服务端之间建⽴⼀个 websocket ⻓连接,将 webpack 编译打包的各个阶段的状态信息告知浏览器端,同时也包括第三步中 Server 监听静态⽂件变化的信息。浏览器端根据这些 socket 消息进⾏不同的操作。当然服务端传递的最主要信息还是新模块的hash 值,后⾯的步骤根据这⼀hash 值来进⾏模块热替换。

相关推荐
wefly201737 分钟前
jsontop.cn:一站式 JSON 全能工具集,开发全流程效率神器
前端·javascript·python·django·json·json在线转换
XDHCOM2 小时前
Redis远程连接命令详解,分享高效配置与安全实践技巧
前端·redis·安全
YAY_tyy3 小时前
Vue3 + Three.js 实战:自定义 3D 模型加载与交互全流程
前端·javascript·vue.js·threejs
星河耀银海3 小时前
3D效果:HTML5 WebGL结合AI实现智能3D场景渲染
前端·人工智能·深度学习·3d·html5·webgl
美狐美颜sdk9 小时前
从人脸关键点到动态贴图:面具特效在美颜SDK中的实现原理
前端·图像处理·人工智能·直播美颜sdk·美颜api
我命由我123459 小时前
React Router 6 - 编程式路由导航、useInRouterContext、useNavigationType
前端·javascript·react.js·前端框架·html·ecmascript·js
威联通网络存储9 小时前
告别掉帧与素材损毁:威联通 QuTS hero 如何重塑影视后期协同工作流
前端·网络·人工智能·python
anOnion9 小时前
构建无障碍组件之Tabs Pattern
前端·html·交互设计
一招定胜负10 小时前
课堂教学质量综合评分系统
java·linux·前端
2301_7806698610 小时前
前端logo替换开发
前端·vue.js